機器數既是原碼,也是補碼。在計算機中表示的帶符號的二進制數稱為機器數,機器數包含原碼、反碼和補碼三種表示形式。原碼就是加了一位符號位的二進制數,正數符號位為0,負數符號位為1,符號位為最高位;正數的反碼就是其原碼,負數的反碼則是符號位不變,其他位元取反;正數的補碼就是其原碼,負數的補碼則是反碼1。
本教學操作環境:windows7系統、Dell G3電腦。
透過了解機器數後發現:機器數包含了“源碼”,“反碼”,“補碼”的表示形式;
因為機器數指的是一個數在計算機裡以二進位表示的形式,機器數的首位是符號位,正數的符號位為“0”,負數的符號位為“1”。
例如:5 的機器數是:00000101
-5的機器數為:10000101 (以8位元二進位為例)
真值指的是帶有符號位元的機器數對應的真實數值。
對於真值而言,一般用十進位表示,也可以用二進位表示,很少用其他進位表示真值。
例如:10000101 的真值= -0000101 = -5
00000101 的真值= 0000101 = 5
原碼就是加了一位符號位的二進制數,正數符號位為0,負數符號位為1,符號位為最高位。個人理解就是將真值裡面的" "轉換為0,"-"轉換為1。
原碼的表示形式就是第一位是符號位元加上真值的絕對值。
例如:-000101(真值)= 10000101(原碼)
00000101(真值)= 00000101(原碼)
因為第一位是符號位,所以原碼在8位二進位的範圍為:
11111111~0111111 即 -127~127
原碼是最容易被大腦理解,計算的表示形式。
正數的補碼反碼是其本身;正數的反碼就是其原碼,負數的反碼則是符號位元不變,其他位元取反(0變1,1變0)負數的反碼是符號位元不變,其餘位元取反。
反碼就是在原碼的基礎上,如果是正數,就和原碼一樣,如果是負數,首位符號不變,其餘數值取反。
例如:00000101(原碼)= 00000101(反碼)
10000101(原碼)=
10000101(原碼)=# 11111010 (反碼)
##111111010 (反碼)補碼是在原碼的基礎上,如果是正數,就和原碼一樣,如果是負數,除首位符號外,其餘數值取反(反碼),在它的基礎上1。
例如:00000101(原碼)= 00000101(反碼)= 00000101(補碼)
卷
#對於負數, 補碼表示方式也是人腦無法直觀看出其數值的,通常也需要轉換成原碼再計算其數值。
#只使用原碼容易被理解,但是對於計算機而言要辨別首位正負,要消耗大量資源,於是人們尋找到了利用符號位元參與運算的方法。
常見問題欄位!
以上是機器數是原碼還是補碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!