- 可編程序控制系統設計技術(FX系列)
- 吳啟紅
- 931字
- 2020-11-21 15:59:31
1.4 帶符號數的表示及轉換(8位)
計算機(或PLC)中要表示的數有不帶符號數(沒有正負之分,只有零和正數)和帶符號數(有正有負有零),不可能用正號或負號來表示一個數的極性。如圖1-3所示,最右邊的最低位標為b0(稱為第0位,不是第1位),最高位標為b7(稱為第7位)。
1.不帶符號數的表示
8位全用來表示大小,可以表示的十進制數的范圍是0~255。
例:01001101=4DH=77。11111111=FFH=255。01111111=7FH=127。10000000=80H=128
2.符號數的表示
如果用8位二進制數表示有正有負的數,就需要用8位中的一位表示數的正負。規定:最高位b7是符號位,b7=0表示“+”,b7=1表示“-”。其余各位(b6~b0)為數值位。對于數值位,又有如下的原碼、反碼、補碼之分:
(1)原碼 其余各位(b6~b0)表示該數的絕對值。原碼所能表示十進制數的范圍是-127~+127。
(2)反碼 正數的反碼與原碼相同,負數的反碼:符號位(b7)仍為1,其余各位是將該負數的原碼對應的各位取反。
(3)補碼 正數的補碼與原碼相同,負數的補碼:符號位(b7)仍為1,其余各位是將該負數的反碼末位加1。
方法一:(X)補=(X)反+1
8位二進制數補碼可以表示的十進制數的范圍是+127~-128(01111111~10000000或7FH~80H)
可以看出,正數的原碼、反碼、補碼都是相同的,負數的原碼、反碼、補碼各不相同。由負數的原碼求補碼,除了先由原碼求反碼,再由反碼求補碼的方法之外,還可以直接由原碼求補碼:
方法二:利用公式(-X)補=100H-X。注意,式中-X是負數,X是正數。
由于8位二進制數補碼所能表示的負數范圍是-1~-128,此公式只適用于計算-1~-128的負數的補碼。如果要計算16位二進制數負數的補碼,應當用公式(-X)補=10000H-X。
可以看到,負數的絕對值越小,它的補碼看起來越大。
3.轉換(只適用于負數)
(1)反→原反反得原((X)反)反=(X)原
(2)補→原補補得原((X)補)補=(X)原
另外,還有一個規律:(X-Y)補=(X)補+(-Y)補,由于計算機中的硬件電路只有加法器(全加電路),沒有減法電路,這個規律可以把減法化為加法來計算,所以計算機中的數,如果不特別聲明,一律是補碼。
例:((-86)補)補=(10101010)補=11010110=(-86)原
例:X=34,Y=68,則X-Y=-34在計算機中的結果為(-34)補=100H-22H=DEH=11011110
實際上,在計算機中(X-Y)補=(34-68)補=(34)補+(-68)補=22H+BCH=DEH=11011110
也可直接相減:34-68=22H-44H=DEH=11011110