官术网_书友最值得收藏!

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。

978-7-111-38174-7-Chapter01-23.jpg

(2)反碼 正數的反碼與原碼相同,負數的反碼:符號位(b7)仍為1,其余各位是將該負數的原碼對應的各位取反。

978-7-111-38174-7-Chapter01-24.jpg

(3)補碼 正數的補碼與原碼相同,負數的補碼:符號位(b7)仍為1,其余各位是將該負數的反碼末位加1。

方法一:(X)補=(X)反+1

978-7-111-38174-7-Chapter01-25.jpg

8位二進制數補碼可以表示的十進制數的范圍是+127~-128(01111111~10000000或7FH~80H)

可以看出,正數的原碼、反碼、補碼都是相同的,負數的原碼、反碼、補碼各不相同。由負數的原碼求補碼,除了先由原碼求反碼,再由反碼求補碼的方法之外,還可以直接由原碼求補碼:

方法二:利用公式(-X)補=100H-X。注意,式中-X是負數,X是正數。

由于8位二進制數補碼所能表示的負數范圍是-1~-128,此公式只適用于計算-1~-128的負數的補碼。如果要計算16位二進制數負數的補碼,應當用公式(-X)補=10000H-X

978-7-111-38174-7-Chapter01-26.jpg

可以看到,負數的絕對值越小,它的補碼看起來越大。

3.轉換(只適用于負數)

(1)反→原反反得原((X)反)反=(X)原

(2)補→原補補得原((X)補)補=(X)原

另外,還有一個規律:(XY)補=(X)補+(-Y)補,由于計算機中的硬件電路只有加法器(全加電路),沒有減法電路,這個規律可以把減法化為加法來計算,所以計算機中的數,如果不特別聲明,一律是補碼。

例:((-86)補)補=(10101010)補=11010110=(-86)原

例:X=34,Y=68,則X-Y=-34在計算機中的結果為(-34)補=100H-22H=DEH=11011110

實際上,在計算機中(XY)補=(34-68)補=(34)補+(-68)補=22H+BCH=DEH=11011110

也可直接相減:34-68=22H-44H=DEH=11011110

主站蜘蛛池模板: 内江市| 昆明市| 绍兴市| 贞丰县| 佛坪县| 青海省| 谢通门县| 寻乌县| 马山县| 瑞安市| 张家界市| 皋兰县| 新密市| 杭锦后旗| 昌乐县| 凤台县| 台北市| 广德县| 高陵县| 洛川县| 延吉市| 宕昌县| 酒泉市| 阿荣旗| 禄丰县| 鸡西市| 和顺县| 来安县| 沈丘县| 环江| 襄樊市| 惠来县| 长海县| 平谷区| 安宁市| 连城县| 富蕴县| 杂多县| 唐山市| 临汾市| 卢湾区|