鉴于:
int number = 0xFFFFFF87;
number = ~number + 1;
printf ("%x", number);
为什么'数字'成为' 79'而不是' 87'我怎样才能做到' 87' ?
答案 0 :(得分:1)
因为~0xFFFFFF87 = 0x00000078
而是0x79,当添加1时,你得到0x00000079
。
要获得0x87
,您应该使用:
int number = 0xFFFFFF87 & 0xFF;
,它将仅选择最低有效字节,并将其他字节屏蔽为零。
答案 1 :(得分:0)
~
否定了所有内容,而不仅仅是那些具有0xF
十六进制组的内容。
使0x87
只需反转操作,即:
int number = ~(0x87-1); // which is 0xFFFFFF79