二進(jìn)制補(bǔ)碼運算規(guī)則?二進(jìn)制補(bǔ)碼運算例題

本篇文章給大家談?wù)劧M(jìn)制補(bǔ)碼運算規(guī)則,以及二進(jìn)制補(bǔ)碼運算例題對應(yīng)的知識點,文章可能有點長,但是希望大家可以閱讀完,增長自己的知識,最重要的是希望對各位有所幫助,可以解決...
本篇文章給大家談?wù)劧M(jìn)制補(bǔ)碼運算規(guī)則,以及二進(jìn)制補(bǔ)碼運算例題對應(yīng)的知識點,文章可能有點長,但是希望大家可以閱讀完,增長自己的知識,最重要的是希望對各位有所幫助,可以解決了您的問題,不要忘了收藏本站喔。
二進(jìn)制變形補(bǔ)碼計算
1、正數(shù)的補(bǔ)碼表示:
正數(shù)的補(bǔ)碼=原碼
負(fù)數(shù)的補(bǔ)碼={原碼符號位不變}+{數(shù)值位按位取反后+1}or
={原碼符號位不變}+{數(shù)值位從右邊數(shù)第一個1及其右邊的0保持不變,左邊安位取反}
以十進(jìn)制整數(shù)+97和-97為例:
+97原碼=0110_0001b
+97補(bǔ)碼=0110_0001b
-97原碼=1110_0001b
-97補(bǔ)碼=1001_1111b
2、純小數(shù)的原碼:
純小數(shù)的原碼如何得到呢?方法有很多,在這里提供一種較為便于筆算的方法。
以0.64為例,通過查閱可知其原碼為0.1010_0011_1101_0111b。
操作方法:
將0.64*2^n得到X,其中n為預(yù)保留的小數(shù)點后位數(shù)(即認(rèn)為n為小數(shù)之后的小數(shù)不重要),X為乘法結(jié)果的整數(shù)部分。
此處將n取16,得
X=41943d=1010_0011_1101_0111b
即0.64的二進(jìn)制表示在左移了16位后為1010_0011_1101_0111b,因此可以認(rèn)為0.64d=0.1010_0011_1101_0111b與查詢結(jié)果一致。
再實驗n取12,得
X=2621d=1010_0011_1101b即0.64d=0.1010_0011_1101b,在忽略12位小數(shù)之后的位數(shù)情況下,計算結(jié)果相同。
3、純小數(shù)的補(bǔ)碼:
純小數(shù)的補(bǔ)碼遵循的規(guī)則是:在得到小數(shù)的源碼后,小數(shù)點前1位表示符號,從最低(右)位起,找到第一個“1”照寫,之后“見1寫0,見0寫1”。
以-0.64為例,其原碼為1.1010_0011_1101_0111b
則補(bǔ)碼為:1.0101_1100_0010_1001b
當(dāng)然在硬件語言如verilog中二進(jìn)制表示時不可能帶有小數(shù)點(事實上不知道哪里可以帶小數(shù)點)。
4、一般帶小數(shù)的補(bǔ)碼
一般來說這種情況下先轉(zhuǎn)為整數(shù)運算比較方便
-97.64為例,經(jīng)查詢其原碼為1110_0001.1010_0011_1101_0111b
筆算過程:
-97.64*2^16=-6398935=1110_0001_1010_0011_1101_0111b,其中小數(shù)點在右數(shù)第16位,與查詢結(jié)果一致。
則其補(bǔ)碼為1001_1110_0101_1100_0010_1001b,在此采用負(fù)數(shù)的補(bǔ)碼={原碼符號位不變}+{數(shù)值位按位取反后+
二進(jìn)制1101的補(bǔ)碼怎么計算
同學(xué)們,大家好!我們應(yīng)該都知道二進(jìn)制數(shù)1101應(yīng)該是一個負(fù)數(shù),所以說二進(jìn)制數(shù)1101的原碼就應(yīng)該是1101,負(fù)數(shù)二進(jìn)制數(shù)1101的反碼就應(yīng)該是1010,最后求出負(fù)數(shù)二進(jìn)制數(shù)1101的補(bǔ)碼就應(yīng)該是1011,同學(xué)們,你們大家都看明白了沒有啊,再多看幾遍
二進(jìn)制數(shù)補(bǔ)碼的范圍公式
8位補(bǔ)碼范圍是-128至127.
根據(jù)補(bǔ)碼的幾條規(guī)定即可推出上述結(jié)論:
1若二進(jìn)制每位全為0,則表示數(shù)0
2若最高位(即符號位)為0,表示正數(shù)
3若最高位為1,表示是負(fù)數(shù),而該負(fù)數(shù)的絕對值是多少呢?將每個二進(jìn)制位(包括符號位)取反加1,得到一個二進(jìn)制數(shù),將該數(shù)看成無符號數(shù),其值就是上述負(fù)數(shù)的絕對值。
例如,二進(jìn)制的10000000的最高位為1,所以它表示的是負(fù)數(shù)。是負(fù)的多少呢?我們將其八位全部取反,得到01111111,然后加1,得到10000000.將該數(shù)看作無符號數(shù),值為128,故計算機(jī)中的10000000表示的是-128。【關(guān)于這一點要死記硬背了,可以參考下面列出的對比數(shù)記憶】
最高位(即符號位)為1的8位有符號數(shù)有128個,故可表示128個負(fù)數(shù);最高位為0的8位有符號數(shù)有128個,但全0的那個表示數(shù)0,所以總共只能表示127個正整數(shù)。
-7用2的補(bǔ)碼的方法計算
-7的二進(jìn)制補(bǔ)碼表示為:
A
01111000
B
01111001
C
11111000
D
11111001
-7的二進(jìn)制補(bǔ)碼表示為:
A
01111000
B
01111001
C
11111000
D
11111001
-7的二進(jìn)制補(bǔ)碼表示為:
A
01111000
B
01111001
C
11111000
D
11111001
-7的二進(jìn)制補(bǔ)碼表示為:
A
01111000
B
01111001
C
11111000
D
11111001
二進(jìn)制補(bǔ)碼運算怎么確定有效位數(shù)
兩個二進(jìn)制數(shù)補(bǔ)碼相加時,數(shù)值位有效數(shù)字的位數(shù)
就是該數(shù)的真值的有效數(shù)字的位數(shù),也就是該數(shù)絕對值有效數(shù)字的位數(shù)。
二進(jìn)制補(bǔ)碼的表示范圍有一個規(guī)律,就是n位二進(jìn)制補(bǔ)碼的表示范圍為-2^(n-1)~+2^(n-1)-1。
補(bǔ)碼:補(bǔ)碼是基于反碼的變動,有兩種情況,如果是正數(shù)的補(bǔ)碼,就跟原碼反碼都相同。如果是負(fù)數(shù)的補(bǔ)碼,則在其反碼的基礎(chǔ)上,再加1。
二進(jìn)制負(fù)小數(shù)的補(bǔ)碼
使用十進(jìn)制數(shù)系統(tǒng),每個數(shù)字位置(或列)表示(從右到左讀取數(shù)字):單位(即10^0),數(shù)十(即10^1),數(shù)百(即10^2)等。
對于無符號二進(jìn)制數(shù),基數(shù)為2,因此每個位置變?yōu)?再次從右到左讀):1(即2^0),2(即2^1),4(即2^2)等
在有符號的二進(jìn)制補(bǔ)碼中,最高有效位(MSB)變?yōu)樨?fù)值。因此,它表示數(shù)字符號:負(fù)數(shù)為“1”,正數(shù)為“0”。
固定點(分?jǐn)?shù))系統(tǒng)保持的位數(shù)值不變。列值遵循與以前相同的模式,基數(shù)(2)為冪,但功率為負(fù)
END,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!
本文鏈接:http:///qianduan/4544.html