[英]Reversing 32 bit unsigned int bit digits
我正在嘗試將32位的unsigned int反轉,想將0變為1,並將1變為0,但是似乎出了點問題。
輸入3
輸出:4294967292
預期輸出:2147483648
int main() {
unsigned int n;
scanf("%u",&n);
n^=4294967295;
printf("%u",n);
return 0;
}
您的期望是錯誤的。
讓我們以十六進制形式執行所有操作:
0x00000003 ^ 0xffffffff = 0xfffffffc
因此,以十六進制表示的正確輸出為0xfffffffc
,它是(無符號)十進制的4294967292
。
或以二進制形式:
00000000000000000000000000000011 0x00000003
^ 11111111111111111111111111111111 0xffffffff
---------------------------------- ----------
11111111111111111111111111111100 0xfffffffc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.