64位有符號整數a 0x7FFFFFFFFFFFFFFF 和 b 0x8000000000000000相加,之後的10進制數?
0x7FFFFFFFFFFFFFFF
0x8000000000000000
0xFFFFFFFFFFFFFFFF(16個F)
16個F就是64個1,由於二進制有符號數都是用最高位作爲符號位,計算機作爲存儲負數用的是補碼方式,其計算方式:
正數,原碼和補碼相同。
負數,需要除了符號位之外所有的位要按位取反,之後末尾+1.
所以對於
0xFFFFFFFFFFFFFFFF就有64個1(一個F爲4個1),所以要減去-1,之後按位取反得到二進制數11,由於0
表示正,1表示負數,所以是-1.