取高八位与低八位

「已注销」 2019-08-03 11:51:41
为何对一个short类型的十进制数/256取模能得到低八位,这个数/256能得到高八位?
...全文
2575 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-08-05
  • 打赏
  • 举报
回复
255对应的16进制就是0xff,也就是8位bit最大值。对256取模得到的值取值范围是:[0, 255]。所以对256取模可以得到低8位。
但是直接不能得到高八位,可以先把高八位移到低位,然后在取模运算也是可以得到高八位的值。
qq_36010444 2019-08-05
  • 打赏
  • 举报
回复
short int right,left,v=0x2244;
right = v & 0x00ff; // 取右8位
left = v >> 8; //取左8位
printf("right=%#x, left=%#x\n",right,left);
zwfgdlc 2019-08-03
  • 打赏
  • 举报
回复

#define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
Italink 2019-08-03
  • 打赏
  • 举报
回复
对于123456这个十进制数,你怎么取低三位?很简单,1取000(10³),那么剩余的高三位呢?÷1000对吧,而short占2字节,共16个二进制位,模256(2^8),就可以得到低八位,这跟十进制是一样的模

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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