回覆列表
  • 1 # 使用者6818057080839

    補碼(complement)分為1的補碼(one"s complement)和2的補碼(two"s complement),2的補碼預設將第一位作為符號位,1代表負,0代表正。以下為8位的例子,來源:Two"s complementEight-bit two"s-complement二進位制 | 無符號 | 2的補碼0111 1111 | 127 | 1270111 1110 | 126 | 1260000 0010 | 2 | 20000 0001 | 1 | 10000 0000 | 0 | 01111 1111 | 255 | −11111 1110 | 254 | −21000 0010 | 130 | −1261000 0001 | 129 | 1271000 0000 | 128 | 128延伸到題目中的例子:1111...11111 -> -11111...11110 -> -21111...11101 -> -31111...11100 -> -41111...11011 -> -5...int型別是帶符號的整形,預設將數字作為2的補碼來理解,於是你的1111...11100就被理解成了-4。如果想要排除負數(題主你沒有說明語言所以我就預設是C了),可以使用unsigned int,正數上限翻倍,不包括負數,於是乎1111...11100就會變成4294967292而不是-4。

  • 中秋節和大豐收的關聯?
  • 後漢為什麼只存在了3年?後唐為什麼只存在了13年?南陳為什麼只存在了32年?