回覆列表
  • 1 # 你永遠追不上的巨人

    1111 1111表示-1的補碼, 計算機裡都是按照補碼進行儲存, 即使它表示十進位制255. 一般一個byte為8位, 即-128~127的範圍. 補碼的計算: 正數不變, 負數: 原碼"非符號"位取反+1. 比如-1的原碼為(首位為符號位1表示負號)1000 0001 --> 1111 1110 + 1 為 1111 1111 (-127十進位制). 也可以看做: -1的絕對值向左平移128位=>1-128 = -127即為 (1)111 1111 [此處取1的絕對值意在表示,計算機首先取數字的絕對值再為數字新增正負號: 即1的絕對值要新增負號的操作即是將其向左拉動128位.因為記憶體按照順序來排列所以, 可看做 -128(0)(10000000), -127(1)(10000001), -126(2)(10000011), .....-1(127)(11111111), 0(0)(00000000), 1(1)(00000001), 2, 3, .....127(127)(01111111)] {注意: 圓括號裡是計算機裡記憶體的下標,去除掉符號位剩下的7位, 用來計數作用}計算機為了儲存方便從{10000000, 到111111111, (-128~-1)}{00000000, 到 01111111, (0~127)} 總共255位 , 負數位(-128 到 -1)共127位數正數位(0~127)共128位數,因此巧妙的省略了兩個重複的+0和-0, 直觀上來看記憶體的順序是連續的,從10000000到01111111, (即127個(負數)+0+127個數 (正數))而轉換成人類角度正負數順序就不連續了, 所以-1的補碼正好是記憶體前半段(10000000~11111111)區間最後一個數字即為11111111

  • 中秋節和大豐收的關聯?
  • 堅持勵志的成語?