请教:int型变量强制转化成byte型,系统是怎样进行运算的?

FishCrazy 2003-04-14 10:58:59
例如:

int n = 300;

byte b = (byte)n;

b = ?

系统给出的结果是: b=44

...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-04-14
  • 打赏
  • 举报
回复
按照你提供的转换方式,转换结果是系统处理的,都是取模操作,滤过高位保留低位。
如果例子当中的n是float类型,它也可以被转换,结果也会是44。

但是如果使用下面的转换方式
b = * ((BYTE*)&n)
对于整数类型的n同样可以得到 b = 44,如果对于float类型,则很难说得到的是什么了。
因为转换的方式就不同了。这个时候,使用的转换机制对于X86体系,数字存储的时候,低位在前,高位在后。强制转换的时候,只是把存储空间当中第一个BYTE当中的数据当作目标数据来使用。
hitcoffee 2003-04-14
  • 打赏
  • 举报
回复
将整数当中的4个字节中取最低位!
300---〉100101100
取后8位00101100----〉44
Riemann 2003-04-14
  • 打赏
  • 举报
回复
可是将int型转化为BYTE型确实进行的是取低字节操作。
azuretttc 2003-04-14
  • 打赏
  • 举报
回复
INT是16位(VC中32位),BYTE8位,所以你将INT转成BYTE当然只能取最低的8位了,所以第9位上的1取不进来,所以是300-256=44

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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