十六進制之間的加減

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章