Dor*_*jay 3 c c++ hex objective-c-category
我猜输出应该是"0000"但它的ffff不是~ffff-> 0000 0000 0000 0000
#include<stdio.h>
int main()
{
unsigned int a=0xffff;
~a;
printf("%x\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*per 15
您需要将值分配回a:
a = ~a;
Run Code Online (Sandbox Code Playgroud)
即使这样,由于数据类型的大小,输出值可能如下所示:
ffff0000
Run Code Online (Sandbox Code Playgroud)
要使其按预期工作(全0),请将初始值设置a为UINT_MAX(从limits.h).这样做会将所有位设置为1.
正如蒂姆和弗拉德所说的那样,你没有做任何有关逐位反转的事情.
即使您将代码更改为a = ~a;,也可能不会为零.那是因为如果unsigned int有超过16位,你将有前导零,它在反转后变为1.
所以我希望你的输出是
FFFF0000
甚至
FFFFFFFFFFFF0000
如果您想要16位按位运算,则可以使用
#include <inttypes.h>
uint16_t a;
Run Code Online (Sandbox Code Playgroud)