类型转换

shihaiyun152888 2007-03-24 10:10:36
已知一个double类型的值,怎么把它分配到两个unsigned char型的高低位中?
如:double gdv = 4000; //此值小于256 * 256
如何把4000分配给下面的高低位保存:
unsigned char H = ? ; //高位
unsigned char L = ? ; //低位

...全文
178 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihaiyun152888 2007-04-03
  • 打赏
  • 举报
回复
既然你都算出来了.
// 3 * 256 + 63 =831
那就用831.或者其他你需要处理的数据.

831/256=3
831%256=63

除法结果的商,也就是3,放高位里.
去模的余数,也就是63,放低位里,不就可以了吗?


如果不是831,是-831呢?????
按上面说的,那不是有
(-831)/256 = -3
(-831)%256 = -63

要是
char H = -3 //正确
但是
unsigned char H = -3 ????? //这样的话,单步执行H为253呢

不知道计算机是怎么把有符号的数值保存到unsigned类型的数据里面,原理是???
iamcaicainiao 2007-03-24
  • 打赏
  • 举报
回复
unsigned char是8位的.

你的意思是3放在高4位,
63放在低4位吗?

如果是这个意思的法.
只需要和00001111这个东西相与就可以了.

类似的11110000.这样.位运算就可以了.
iamcaicainiao 2007-03-24
  • 打赏
  • 举报
回复
既然你都算出来了.
// 3 * 256 + 63 =831
那就用831.或者其他你需要处理的数据.

831/256=3
831%256=63

除法结果的商,也就是3,放高位里.
去模的余数,也就是63,放低位里,不就可以了吗?
shihaiyun152888 2007-03-24
  • 打赏
  • 举报
回复
可能说的不是很清楚
如:
double gdv = 831 ;
如何保存为
unsigned char H = 3;
unsigned char L = 63; // 3 * 256 + 63 =831


给个思路,谢谢!

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧