簡體   English   中英

反轉32位無符號int位數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM