有符號(hào)二進(jìn)制數(shù)使用MSB作為符號(hào)位來(lái)顯示正數(shù)或負(fù)數(shù)的范圍
在數(shù)學(xué)中,正數(shù)(包括零)表示為無(wú)符號(hào)數(shù)。也就是說(shuō),我們不會(huì)在它們前面加上+ ve符號(hào)來(lái)表明它們是正數(shù)。
然而,在處理負(fù)數(shù)時(shí)我們會(huì)在數(shù)字前面使用-ve符號(hào)來(lái)顯示該值為負(fù)值且與正無(wú)符號(hào)值不同,帶符號(hào)二進(jìn)制數(shù)也是如此。
但是,在數(shù)字電路中沒(méi)有規(guī)定因?yàn)閿?shù)字系統(tǒng)使用以“0”和“1”表示的二進(jìn)制數(shù)來(lái)操作,所以在數(shù)字上加上一個(gè)加號(hào)或一個(gè)減號(hào)。當(dāng)在微電子學(xué)中一起使用時(shí),這些“1”和“0”被稱(chēng)為位(是BInary digiT的收縮),分為幾個(gè)范圍大小的數(shù)字,這些數(shù)字由通用名稱(chēng)引用,例如 byte 或 word 。
我們之前也看到過(guò)一個(gè)8位二進(jìn)制數(shù)(一個(gè)字節(jié))的值可以是0(00000000 2 )到255(11111111 2 ),即2 8 = 256個(gè)不同的位組合,形成一個(gè)8位字節(jié)。因此,例如無(wú)符號(hào)二進(jìn)制數(shù),例如:01001101 2 = 64 + 8 + 4 + 1 = 77 10 十進(jìn)制。但數(shù)字系統(tǒng)和計(jì)算機(jī)也必須能夠使用和操縱負(fù)數(shù)以及正數(shù)。
數(shù)學(xué)數(shù)字通常由符號(hào)和值(幅度)組成,其中符號(hào)表示是否數(shù)字為正數(shù)( + )或負(fù)數(shù),( - ),其值指示數(shù)字的大小,例如23,+ 156或-274。呈現(xiàn)數(shù)字是這種方式稱(chēng)為“符號(hào) - 幅度”表示,因?yàn)樽钭筮叺臄?shù)字可用于指示符號(hào),其余數(shù)字表示數(shù)字的大小或值。
符號(hào)幅度表示法是最簡(jiǎn)單的一種最常用的方法,用于表示零的任一側(cè)的正負(fù)數(shù)( 0 )。因此,簡(jiǎn)單地通過(guò)改變相應(yīng)正數(shù)的符號(hào)來(lái)獲得負(fù)數(shù),因?yàn)槊總€(gè)正數(shù)或無(wú)符號(hào)數(shù)將具有相反的符號(hào),例如,+ 2和-2,+ 10和-10等。
但是,如果我們所擁有的只是一堆零和零,我們?nèi)绾伪硎居蟹?hào)的二進(jìn)制數(shù)。我們知道二進(jìn)制數(shù)字或位只有兩個(gè)值,“1”或“0”,對(duì)我們來(lái)說(shuō)很方便,一個(gè)符號(hào)也只有兩個(gè)值,即“+”或者“-”。
然后我們可以使用單個(gè)位來(lái)識(shí)別帶符號(hào)二進(jìn)制數(shù)的符號(hào),使其值為正值或負(fù)值。因此,為了表示正二進(jìn)制數(shù)( + n )和負(fù)數(shù)( -n )二進(jìn)制數(shù),我們可以在添加符號(hào)時(shí)使用它們。
對(duì)于帶符號(hào)的二進(jìn)制數(shù),最高有效位(MSB)用作符號(hào)位。如果符號(hào)位為“0”,則表示該值為正值。如果符號(hào)位為“1”,則該值為負(fù)值。數(shù)字中的其余位用于表示通常的無(wú)符號(hào)二進(jìn)制數(shù)格式方式的二進(jìn)制數(shù)的大小。
然后我們可以看到Sign-and-Magnitude(SM)表示法存儲(chǔ)正數(shù)和通過(guò)將“n”個(gè)總比特分成兩部分的負(fù)值:符號(hào)為1比特,而純二進(jìn)制數(shù)值為n-1比特。例如,十進(jìn)制數(shù)53可以表示為8位帶符號(hào)二進(jìn)制數(shù),如下所示。
正有符號(hào)二進(jìn)制數(shù)
負(fù)號(hào)有符號(hào)二進(jìn)制數(shù)
這里的缺點(diǎn)是在我們有一個(gè)全范圍 n位無(wú)符號(hào)二進(jìn)制數(shù),我們現(xiàn)在有一個(gè) n-1位帶符號(hào)的二進(jìn)制數(shù),它給出了一個(gè)減少的數(shù)字范圍:
-2 (n-1)到+ 2 (n-1)
所以例如:如果我們有4位代表一個(gè)帶符號(hào)二進(jìn)制數(shù),(符號(hào)位為1位,幅度位為為3位),那么我們可以用符號(hào)幅度表示法表示的實(shí)際數(shù)字范圍將是:
-2 (4-1) -1to + 2 (4-1) -1
<跨度> -2 (3) -1to + 2 (3) -1
<跨度> -7to + 7
以前,無(wú)符號(hào)4位二進(jìn)制數(shù)的范圍是從 0 到 15 ,或 0 到 F (十六進(jìn)制),我們現(xiàn)在的范圍縮小到-7到+7。因此,無(wú)符號(hào)二進(jìn)制數(shù)沒(méi)有單個(gè)符號(hào)位,因此可以具有更大的二進(jìn)制范圍,因?yàn)樽罡哂行唬∕SB)只是一個(gè)額外的位或數(shù)字而不是使用的符號(hào)位。
符號(hào)量形式的另一個(gè)缺點(diǎn)是,我們可以得到零,+ 0或0000 2 的正結(jié)果,零,-0或1000 2 。兩者都有效但哪一個(gè)是正確的。
有符號(hào)二進(jìn)制數(shù)示例No1
使用符號(hào)幅度格式將以下十進(jìn)制值轉(zhuǎn)換為帶符號(hào)的二進(jìn)制數(shù):
- 15 10 as 6-bit number | ? | 1 01111 2 |
+ 23 10 as 6-bit number | ? | 0 10111 2 |
- 56 10 as一個(gè)8位數(shù)字 | ? | 1 0111000 2 |
+ 85 10 as 8-bit number | ? | 0 1010101 2 |
- 127 10 as 8-bit number | ? | <跨度> 1 <跨度> 1111111 <子> 2 |
注意,對(duì)于4位,6位,8位,16位或32位有符號(hào)二進(jìn)制數(shù),所有位必須有一個(gè)值,因此“0”用于填充之間的空格。最左邊的符號(hào)位和第一個(gè)或最高的值“1”。
二進(jìn)制數(shù)的符號(hào)幅度表示是一種使用和理解的簡(jiǎn)單方法,用于表示帶符號(hào)的二進(jìn)制數(shù),因?yàn)槲覀兪褂眠@個(gè)系統(tǒng)所有的在數(shù)學(xué)中使用正常的十進(jìn)制(基數(shù)為10)的數(shù)字。如果二進(jìn)制數(shù)為負(fù)數(shù),則在其前面加“1”,如果為正數(shù),則在“0”加“0”。
然而,使用這種符號(hào)幅度方法可能導(dǎo)致兩種不同的位模式具有相同二進(jìn)制值的可能性。例如, + 0 和 -0 分別為 0000 和 1000 作為帶符號(hào)的4位二進(jìn)制數(shù)。所以我們可以看到使用這種方法可以有兩個(gè)零表示,一個(gè)正零( 0 000 2 ),也可以是負(fù)零( 1 000 2 )這可能會(huì)給計(jì)算機(jī)和數(shù)字系統(tǒng)帶來(lái)很大的復(fù)雜性。
對(duì)符號(hào)二進(jìn)制文件的補(bǔ)充數(shù)字
一個(gè)補(bǔ)語(yǔ)或1的補(bǔ)語(yǔ),因?yàn)樗脖环Q(chēng)為,是另一種方法,我們可以用來(lái)表示帶符號(hào)二進(jìn)制數(shù)的負(fù)二進(jìn)制數(shù)系統(tǒng)。在一個(gè)補(bǔ)碼中,正數(shù)(也稱(chēng)為非補(bǔ)數(shù))與符號(hào)幅度數(shù)一樣保持不變。
然而,負(fù)數(shù)表示為取一個(gè)的補(bǔ)數(shù)(反轉(zhuǎn),否定)無(wú)符號(hào)正數(shù)。由于正數(shù)始終以“0”開(kāi)頭,因此補(bǔ)碼始終以“1”開(kāi)頭以表示負(fù)數(shù)。
負(fù)二進(jìn)制數(shù)的一個(gè)補(bǔ)碼是其正對(duì)應(yīng)的補(bǔ)碼,所以要取二進(jìn)制數(shù)的一個(gè)補(bǔ)碼,我們需要做的就是依次改變每一位。因此,“1”的一個(gè)補(bǔ)碼是“0”,反之亦然,那么 10010100 2 的一個(gè)補(bǔ)碼就是 01101011 2 因?yàn)樗械?都變?yōu)?而0變?yōu)?。
在構(gòu)建數(shù)字算術(shù)或邏輯解碼器電路時(shí),找到一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼的最簡(jiǎn)單方法是使用逆變器。逆變器自然是補(bǔ)碼發(fā)生器,并且可以并聯(lián)使用以找到任何二進(jìn)制數(shù)的1的補(bǔ)碼,如圖所示。
1使用逆變器補(bǔ)充
然后我們可以看到很容易找到二進(jìn)制數(shù) N 的補(bǔ)碼,因?yàn)槲覀兯枰龅闹皇歉淖?到0和0到1給我們一個(gè) -N 等價(jià)物。也就像前面的符號(hào)幅度表示一樣,一個(gè)補(bǔ)碼也可以有n位表示法來(lái)表示以下范圍內(nèi)的數(shù)字: -2 (n-1) 和 +2 (n-1) - 1 。例如,一個(gè)補(bǔ)碼格式的4位表示可用于表示從-7到+7的十進(jìn)制數(shù),其中兩個(gè)表示為零: 0000 (+0)和 1111 ( - 0)與以前相同。
使用一個(gè)補(bǔ)語(yǔ)的加法和減法
一個(gè)補(bǔ)語(yǔ)的一個(gè)主要優(yōu)點(diǎn)是加法和減法兩個(gè)二進(jìn)制數(shù)。在數(shù)學(xué)中,減法可以以各種不同的方式實(shí)現(xiàn),如 A-B ,與 A +( - B)或 -B + A相同等。因此,減去兩個(gè)二進(jìn)制數(shù)的復(fù)雜性可以通過(guò)簡(jiǎn)單地使用加法來(lái)執(zhí)行。
我們?cè)诙M(jìn)制加法器教程中看到,二進(jìn)制加法遵循與正常加法相同的規(guī)則,除了在二進(jìn)制中只有兩位(數(shù)字),最大的數(shù)字是“1”,(就像“9”是最大的十進(jìn)制數(shù)字),因此二進(jìn)制加法的可能組合如下:
0 | 0 | 1 | 1 | |
+ 0 | + 1 | + 0 | + 1 | |
0 | 1 | 1 | 1←0 | (0加一個(gè)進(jìn)位1) |
當(dāng)要添加的兩個(gè)數(shù)字都是正數(shù)時(shí),總和 A + B ,它們可以通過(guò)直接總和加在一起(包括數(shù)字和位符號(hào)),因?yàn)楫?dāng)單個(gè)位加在一起時(shí),“0 + 0”,“0 + 1”或“1 + 0”導(dǎo)致總和為“0”或“1”。這是因?yàn)楫?dāng)我們想要加在一起的兩個(gè)比特是奇數(shù)(“0”+“1”或“1 + 0”),結(jié)果是“1”。同樣,當(dāng)要加在一起的兩個(gè)比特是偶數(shù)(“0 + 0”)或“1 + 1”)結(jié)果為“0”,直到你得到“1 + 1”,然后總和等于“0”加上進(jìn)位“1”。讓我們看一個(gè)簡(jiǎn)單的例子。
減去兩個(gè)二進(jìn)制數(shù)
需要一個(gè)8位數(shù)字系統(tǒng)使用一個(gè)補(bǔ)碼相互減去以下兩個(gè)數(shù)字115和27.所以在十進(jìn)制中這將是: 115- 27 = 88
首先,我們需要將兩個(gè)十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),并通過(guò)添加前導(dǎo)零來(lái)確保每個(gè)數(shù)字具有相同的位數(shù),以產(chǎn)生一個(gè)8位數(shù)(字節(jié))。因此:
二進(jìn)制
115 10 : 01110011 2
27二進(jìn)制的 10 是: 00011011 2
現(xiàn)在我們需要找到第二個(gè)二進(jìn)制的補(bǔ)碼編號(hào),( 00011011 ),同時(shí)保留第一個(gè)數(shù)字( 01110011 )。因此,通過(guò)將所有1改為0并將0改為1,因此 00011011 的補(bǔ)碼等于 11100100 。
添加第一個(gè)數(shù)字和第二個(gè)數(shù)字的補(bǔ)碼給出:
01110011 |
+ 11100100 |
溢出→101010111 |
由于數(shù)字系統(tǒng)要使用8位,因此只有前8位用于提供求和的答案,我們只是忽略最后一位(第9位)。該位稱(chēng)為“溢出”位。當(dāng)最重要(最左側(cè))列的總和產(chǎn)生結(jié)轉(zhuǎn)時(shí)發(fā)生溢出。該溢出或進(jìn)位可以完全忽略或傳遞到下一個(gè)數(shù)字部分以用于其計(jì)算。溢出表明答案是肯定的。如果沒(méi)有溢出,那么答案是否定的。
上面的8位結(jié)果是: 01010111 (溢出“1”取消)并將其從我們現(xiàn)在必須在一個(gè)補(bǔ)碼結(jié)果中添加“1”的實(shí)際答案的一個(gè)補(bǔ)碼答案:
01010111 |
+ 1 |
01011000 |
所以從115中減去27( 00011011 2 )的結(jié)果( 01110011 2 )使用二進(jìn)制1的補(bǔ)碼給出答案: 01011000 2 或(64 + 16 + 8)= 88 10 。
然后我們可以看到使用One's Complement和添加過(guò)程可以相互減去有符號(hào)或無(wú)符號(hào)二進(jìn)制數(shù)。二進(jìn)制加法器(如TTL 74LS83或74LS283)可用于加或減兩個(gè)4位有符號(hào)二進(jìn)制數(shù)或級(jí)聯(lián)在一起以生成帶有進(jìn)位的8位加法器。
對(duì)符號(hào)的二進(jìn)制補(bǔ)碼二進(jìn)制數(shù)
兩個(gè)補(bǔ)語(yǔ)或2的補(bǔ)語(yǔ)因?yàn)樗脖环Q(chēng)為,是另一個(gè)方法,如前一個(gè)符號(hào)幅度和一個(gè)補(bǔ)碼形式,我們可用于表示帶符號(hào)二進(jìn)制數(shù)系統(tǒng)中的負(fù)二進(jìn)制數(shù)。在二進(jìn)制補(bǔ)碼中,正數(shù)與無(wú)符號(hào)二進(jìn)制數(shù)完全相同。然而,負(fù)數(shù)由二進(jìn)制數(shù)表示,當(dāng)加到其對(duì)應(yīng)的正等效時(shí),結(jié)果為零。
在二進(jìn)制補(bǔ)碼形式中,負(fù)數(shù)是其正數(shù)的2的補(bǔ)碼。使用與以前基本相同的過(guò)程減去兩個(gè)數(shù)字 A-B = A +(B的2的補(bǔ)碼),兩個(gè)補(bǔ)碼是一個(gè)補(bǔ)碼+1。
主要與前一個(gè)補(bǔ)碼相比,二進(jìn)制補(bǔ)碼的優(yōu)點(diǎn)是沒(méi)有雙零問(wèn)題,而且生成有符號(hào)二進(jìn)制數(shù)的二進(jìn)制補(bǔ)碼要容易得多。因此,當(dāng)數(shù)字以二進(jìn)制補(bǔ)碼格式表示時(shí),算術(shù)運(yùn)算相對(duì)容易執(zhí)行。
讓我們看看使用二進(jìn)制補(bǔ)碼從上面減去兩個(gè)8位數(shù)115和27,我們從上面記得二進(jìn)制等價(jià)物是:
二進(jìn)制
115 10 : 01110011 2
27二進(jìn)制的 10 是: 00011011 2
我們的數(shù)字是8位長(zhǎng),然后有2 8 數(shù)字可用于表示我們的值,在二進(jìn)制中這等于: 100000000 2 或 256 10 。那么27 10 的兩個(gè)補(bǔ)碼將是:
(2 8 ) 2 -00011011 = 100000000 -00011011 = 11100101 2
第二個(gè)負(fù)數(shù)的互補(bǔ)意味著減法變得更容易添加兩個(gè)數(shù),因此總和是: 115+(27的2的補(bǔ)碼):
01110011 + 11100101 =101011000 2
如前所述,第9個(gè)溢出位被忽略,因?yàn)槲覀冎粚?duì)前8位感興趣,因此結(jié)果是: 01011000 2 或(64 + 16 + 8)= 88 10 十進(jìn)制,與之前相同。
有符號(hào)二進(jìn)制數(shù)總結(jié)
我們已經(jīng)看到,可以使用最高有效位(MSB)作為符號(hào)位來(lái)表示負(fù)二進(jìn)制數(shù)。如果對(duì) n位二進(jìn)制數(shù)進(jìn)行了簽名,則最左邊的位用于表示留下 n-1位的符號(hào)來(lái)表示該數(shù)字。
例如,在4位二進(jìn)制數(shù)中,這只留下3位來(lái)保存實(shí)際數(shù)字。但是,如果二進(jìn)制數(shù)是無(wú)符號(hào)的,則所有位都可用于表示數(shù)字。
帶符號(hào)二進(jìn)制數(shù)的表示通常稱(chēng)為符號(hào)幅度表示法如果符號(hào)位為“0”,則數(shù)字為正。如果符號(hào)位為“1”,則該數(shù)字為負(fù)數(shù)。在處理二進(jìn)制算術(shù)運(yùn)算時(shí),使用負(fù)數(shù)的補(bǔ)碼會(huì)更方便。
補(bǔ)充是表示負(fù)二進(jìn)制數(shù)的另一種方法。這種替代編碼系統(tǒng)允許通過(guò)使用簡(jiǎn)單加法減去負(fù)數(shù)。
由于正符號(hào)幅度數(shù)始終以零(0)開(kāi)始,因此其補(bǔ)碼始終以一(1)開(kāi)始表示負(fù)數(shù),如下表所示。
4位有符號(hào)二進(jìn)制數(shù)比較
Decimal | 簽名幅度 | 簽名一個(gè)補(bǔ)語(yǔ) | 簽名二的補(bǔ)語(yǔ) |
7 | 0111 | 0111 | 0111 |
6 | 0110 | 0110 | 0110 |
5 | 0101 | 0101 | 0101 |
4 | 0100 | 0100 | 0100 |
3 | 0011 | 0011 | 0011 |
2 | 0010 | 0010 | 0010 |
1 | 0001 | 0001 | 0001 |
0 | 0000 | 0000 | 0000 |
-0 | 1000 | 1111 | - |
-1 | 1001 | 1110 | 1111 |
-2 | 1010 | 1101 | 1110 |
-3 | 1011 | 1100 | 1101 |
-4 | 1100 | 1011 | 1100 |
-5 | 1101 | 1010 | 1011 |
-6 | 1110 | 1001 | 1010 |
-7 | 1111 | 1000 | 1001 |
二進(jìn)制數(shù)的有符號(hào)補(bǔ)碼形式可以使用1的補(bǔ)碼或2的補(bǔ)碼。 1的補(bǔ)碼和二進(jìn)制數(shù)的2的補(bǔ)碼很重要,因?yàn)樗鼈冊(cè)试S表示負(fù)數(shù)。
2的補(bǔ)碼算法通常用于計(jì)算機(jī)處理負(fù)數(shù),唯一的缺點(diǎn)是如果我們想用簽名的二進(jìn)制數(shù)格式表示負(fù)二進(jìn)制數(shù),我們必須放棄以前的正數(shù)范圍。
-
二進(jìn)制數(shù)
+關(guān)注
關(guān)注
0文章
12瀏覽量
7717
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論