模、原碼和補碼
在實際生活中,如果乙個物體在正北方向30度,把該物體順時針旋轉100度,和把這個物體逆時針旋轉260度得到的效果是一樣的。再比如說鐘錶,時針從2點走11個單位,和逆時針走1個單位的位置是一樣的。這兩個例子有個共同的特點,物體和時針都被限制在了一定的範圍內,想要取到乙個位置,都有兩種方式。
模擬這兩個例子,可以理解計算機中模的概念。例子中的「一定範圍」就是模。兩個例子裡面的100與360-100的關係、11與12-11的關係就相當於計算機中的原碼和補碼。
舉例: 在第乙個例子中,-30度可以表示為360-30度。那麼同樣,在計算機中,乙個8位的二進位制數的模就是 1 0000 0000(2^8=256)。-3可以表示為256-3。
得到的結果11111101
就被叫做-3的補碼,10000011(-3的原碼)
和11111101(-3的補碼)
就相當於-30度與330度的關係,雖然長得不一樣,但是在二進位制計算中表達的意義是一樣的。這樣11111101
就可以代替10000011
(-3的原始碼)進行計算機中的二進位制計算。
補碼存在的意義
反碼的存在可以讓計算機表示十進位制中的負數,並且可以讓計算機在運算時只做加法不做減法。
例如:10-3 = 10 + (-3)
在模的範圍裡,乙個數本身與其補碼具有相同的意義。在實際計算10+(-3)
時相當於10的原碼 + (-3的補碼)
的過程。(如果此時你有個疑問,為什麼不直接用-3的原始碼來計算10+(-3),看了下面負數的原碼的定義就知道了。)
負數的原碼
八位二進位制數0000 0000 ~1111 1111
,一共可以表示2^8=256位數。如果想要表示有符號整數,就要將最前面乙個二進位制位作為符號位,即0代表正數,1代表負數,後面7位為數值域,這就是原碼定義。
原碼的符號位不變,二進位製取反得到結果,只是計算機為了計算補碼時的乙個中間量。
各種碼的計算方法
上面例子中提到的求補碼的方法是,用模的值減去負數的絕對值,那個模對應的二進位制1 0000 0000
是9位的,而8位的二進位制是無法表示這個模的。計算機計算補碼的真正辦法是將原碼的符號位不變,二進位製取反加1。
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...
原碼 反碼 補碼
數值在計算機中表示形式為機器數 計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的 是十進位制,正如亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手 指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘...