回覆列表
  • 1 # 使用者4440064888598

    所以整數就有“有符號整數”和“無符號整數”之分啊,比如你說的8位的整數,如果按無符號整數來用,那麼最小值0(二進位制0000-0000),最大值是255(1111-1111),總數是256個,而如果作為有符號整數來用,則最小值為-128(二進位制1000-0000),最大值為127(0111-1111),總數也還是256個。由於8位整數的容量太小(只有256個),所以在大多數程式設計語言中都把8位整數設為無符號整數(即0到255,通常叫做位元組型或Byte型)。而16位、32位、64位整數則通常都是有符號整數:16位整數的最小值為 -32768(二進位制 1000-0000-0000-0000),最大值為32767(0111-1111-1111-1111),如果超過這個範圍(比如32768),那麼程式就會報“溢位”的錯誤,這種情況下就要擴大數的位數才行了。32位和64位的原理是一樣的,這裡就不列出來了。所以你說的如果正數的最高位為1怎麼辦的問題,回答就是自動變為負數了,或者說如果最高位為1那這個數就不是正數,除非是8位無符號整數(但你也必須知道,無符號整數只有正數和0,沒有負數)。補充說一下:在有符號整數中,最高位稱為符號位,就是用它來表示數的正負的,也正因為如此,數值的最大值會減小一半(比如16位整數的65535減少為32767),與此同時,最小值也由0變為負數(-32768),但加起來的總數(65536)是不變的。

  • 2 # 菠蘿小仙女南巷薄荷微

    如果要彙編指令的話,這樣就行:NEGAL(取負指令,要先判斷是不是負數)

    如果要知道怎麼計算的話:

    比如:10010110b(這是以補碼形式表示的負數,假設都是8位數)

    反碼:10010101b(補碼-1,因為由反碼計算補碼是反碼+1得到補碼)

    原碼:11101010b(這就是那個負數的原碼)

    取正:01101010b(直接把最高位換成0)

    得到的就是絕對值

  • 3 # 湯圓電影Vlog

    在二進位制補碼系統中,人為規定最高位是符號位,"0"表示正數,"1"表示負數。這是人為規定的,沒有什麼“為什麼”可言。就像交通規則,車靠右行就是某些國家硬性規定的。

  • 中秋節和大豐收的關聯?
  • 現在小米9SE值得入手嗎?喜歡小屏,但對比又覺得價效比較低?