读书人

(valuegt;gt;16) 和 (valuegt;gt;16) amp; 0x00FF

发布时间: 2012-05-15 14:35:29 作者: rapoo

(value>>16) 和 (value>>16) & 0x00FF的结果区别吗

int value = 0xABCD0123;

(value>>16) 和 (value>>16) & 0x00FF 的结果区别吗

为什么要& 0x00FF


?????????????????????????????????????????????????????????????????????????????????????????????????


[解决办法]
若 value 是有符号的数据,则右移时高位填充符号位
对无符号数据来说,右移时高位补0

你的value是有符号的数据,显然:
(value>>16) 和 (value>>16) & 0x00FF 的结果并不总是不一样的。

& 0x00FF 仅保留 value 数据的低8位,其他位全清0

读书人网 >C语言

热点推荐