有符號二進制數使用MSB作為符號位來顯示正數或負數的范圍
在數學中,正數(包括零)表示為無符號數。也就是說,我們不會在它們前面加上+ ve符號來表明它們是正數。
然而,在處理負數時我們會在數字前面使用-ve符號來顯示該值為負值且與正無符號值不同,帶符號二進制數也是如此。
但是,在數字電路中沒有規定因為數字系統使用以“0”和“1”表示的二進制數來操作,所以在數字上加上一個加號或一個減號。當在微電子學中一起使用時,這些“1”和“0”被稱為位(是BInary digiT的收縮),分為幾個范圍大小的數字,這些數字由通用名稱引用,例如 byte 或 word 。
我們之前也看到過一個8位二進制數(一個字節)的值可以是0(00000000 2 )到255(11111111 2 ),即2 8 = 256個不同的位組合,形成一個8位字節。因此,例如無符號二進制數,例如:01001101 2 = 64 + 8 + 4 + 1 = 77 10 十進制。但數字系統和計算機也必須能夠使用和操縱負數以及正數。
數學數字通常由符號和值(幅度)組成,其中符號表示是否數字為正數( + )或負數,( - ),其值指示數字的大小,例如23,+ 156或-274。呈現數字是這種方式稱為“符號 - 幅度”表示,因為最左邊的數字可用于指示符號,其余數字表示數字的大小或值。
符號幅度表示法是最簡單的一種最常用的方法,用于表示零的任一側的正負數( 0 )。因此,簡單地通過改變相應正數的符號來獲得負數,因為每個正數或無符號數將具有相反的符號,例如,+ 2和-2,+ 10和-10等。
但是,如果我們所擁有的只是一堆零和零,我們如何表示有符號的二進制數。我們知道二進制數字或位只有兩個值,“1”或“0”,對我們來說很方便,一個符號也只有兩個值,即“+”或者“-”。
然后我們可以使用單個位來識別帶符號二進制數的符號,使其值為正值或負值。因此,為了表示正二進制數( + n )和負數( -n )二進制數,我們可以在添加符號時使用它們。
對于帶符號的二進制數,最高有效位(MSB)用作符號位。如果符號位為“0”,則表示該值為正值。如果符號位為“1”,則該值為負值。數字中的其余位用于表示通常的無符號二進制數格式方式的二進制數的大小。
然后我們可以看到Sign-and-Magnitude(SM)表示法存儲正數和通過將“n”個總比特分成兩部分的負值:符號為1比特,而純二進制數值為n-1比特。例如,十進制數53可以表示為8位帶符號二進制數,如下所示。
正有符號二進制數
負號有符號二進制數
這里的缺點是在我們有一個全范圍 n位無符號二進制數,我們現在有一個 n-1位帶符號的二進制數,它給出了一個減少的數字范圍:
-2 (n-1)到+ 2 (n-1)
所以例如:如果我們有4位代表一個帶符號二進制數,(符號位為1位,幅度位為為3位),那么我們可以用符號幅度表示法表示的實際數字范圍將是:
-2 (4-1) -1to + 2 (4-1) -1
<跨度> -2 (3) -1to + 2 (3) -1
<跨度> -7to + 7
以前,無符號4位二進制數的范圍是從 0 到 15 ,或 0 到 F (十六進制),我們現在的范圍縮小到-7到+7。因此,無符號二進制數沒有單個符號位,因此可以具有更大的二進制范圍,因為最高有效位(MSB)只是一個額外的位或數字而不是使用的符號位。
符號量形式的另一個缺點是,我們可以得到零,+ 0或0000 2 的正結果,零,-0或1000 2 。兩者都有效但哪一個是正確的。
有符號二進制數示例No1
使用符號幅度格式將以下十進制值轉換為帶符號的二進制數:
- 15 10 as 6-bit number | ? | 1 01111 2 |
+ 23 10 as 6-bit number | ? | 0 10111 2 |
- 56 10 as一個8位數字 | ? | 1 0111000 2 |
+ 85 10 as 8-bit number | ? | 0 1010101 2 |
- 127 10 as 8-bit number | ? | <跨度> 1 <跨度> 1111111 <子> 2 |
注意,對于4位,6位,8位,16位或32位有符號二進制數,所有位必須有一個值,因此“0”用于填充之間的空格。最左邊的符號位和第一個或最高的值“1”。
二進制數的符號幅度表示是一種使用和理解的簡單方法,用于表示帶符號的二進制數,因為我們使用這個系統所有的在數學中使用正常的十進制(基數為10)的數字。如果二進制數為負數,則在其前面加“1”,如果為正數,則在“0”加“0”。
然而,使用這種符號幅度方法可能導致兩種不同的位模式具有相同二進制值的可能性。例如, + 0 和 -0 分別為 0000 和 1000 作為帶符號的4位二進制數。所以我們可以看到使用這種方法可以有兩個零表示,一個正零( 0 000 2 ),也可以是負零( 1 000 2 )這可能會給計算機和數字系統帶來很大的復雜性。
對符號二進制文件的補充數字
一個補語或1的補語,因為它也被稱為,是另一種方法,我們可以用來表示帶符號二進制數的負二進制數系統。在一個補碼中,正數(也稱為非補數)與符號幅度數一樣保持不變。
然而,負數表示為取一個的補數(反轉,否定)無符號正數。由于正數始終以“0”開頭,因此補碼始終以“1”開頭以表示負數。
負二進制數的一個補碼是其正對應的補碼,所以要取二進制數的一個補碼,我們需要做的就是依次改變每一位。因此,“1”的一個補碼是“0”,反之亦然,那么 10010100 2 的一個補碼就是 01101011 2 因為所有的1都變為0而0變為1。
在構建數字算術或邏輯解碼器電路時,找到一個有符號二進制數的補碼的最簡單方法是使用逆變器。逆變器自然是補碼發生器,并且可以并聯使用以找到任何二進制數的1的補碼,如圖所示。
1使用逆變器補充
然后我們可以看到很容易找到二進制數 N 的補碼,因為我們所需要做的只是改變1到0和0到1給我們一個 -N 等價物。也就像前面的符號幅度表示一樣,一個補碼也可以有n位表示法來表示以下范圍內的數字: -2 (n-1) 和 +2 (n-1) - 1 。例如,一個補碼格式的4位表示可用于表示從-7到+7的十進制數,其中兩個表示為零: 0000 (+0)和 1111 ( - 0)與以前相同。
使用一個補語的加法和減法
一個補語的一個主要優點是加法和減法兩個二進制數。在數學中,減法可以以各種不同的方式實現,如 A-B ,與 A +( - B)或 -B + A相同等。因此,減去兩個二進制數的復雜性可以通過簡單地使用加法來執行。
我們在二進制加法器教程中看到,二進制加法遵循與正常加法相同的規則,除了在二進制中只有兩位(數字),最大的數字是“1”,(就像“9”是最大的十進制數字),因此二進制加法的可能組合如下:
0 | 0 | 1 | 1 | |
+ 0 | + 1 | + 0 | + 1 | |
0 | 1 | 1 | 1←0 | (0加一個進位1) |
當要添加的兩個數字都是正數時,總和 A + B ,它們可以通過直接總和加在一起(包括數字和位符號),因為當單個位加在一起時,“0 + 0”,“0 + 1”或“1 + 0”導致總和為“0”或“1”。這是因為當我們想要加在一起的兩個比特是奇數(“0”+“1”或“1 + 0”),結果是“1”。同樣,當要加在一起的兩個比特是偶數(“0 + 0”)或“1 + 1”)結果為“0”,直到你得到“1 + 1”,然后總和等于“0”加上進位“1”。讓我們看一個簡單的例子。
減去兩個二進制數
需要一個8位數字系統使用一個補碼相互減去以下兩個數字115和27.所以在十進制中這將是: 115- 27 = 88
首先,我們需要將兩個十進制數轉換為二進制數,并通過添加前導零來確保每個數字具有相同的位數,以產生一個8位數(字節)。因此:
二進制
115 10 : 01110011 2
27二進制的 10 是: 00011011 2
現在我們需要找到第二個二進制的補碼編號,( 00011011 ),同時保留第一個數字( 01110011 )。因此,通過將所有1改為0并將0改為1,因此 00011011 的補碼等于 11100100 。
添加第一個數字和第二個數字的補碼給出:
01110011 |
+ 11100100 |
溢出→101010111 |
由于數字系統要使用8位,因此只有前8位用于提供求和的答案,我們只是忽略最后一位(第9位)。該位稱為“溢出”位。當最重要(最左側)列的總和產生結轉時發生溢出。該溢出或進位可以完全忽略或傳遞到下一個數字部分以用于其計算。溢出表明答案是肯定的。如果沒有溢出,那么答案是否定的。
上面的8位結果是: 01010111 (溢出“1”取消)并將其從我們現在必須在一個補碼結果中添加“1”的實際答案的一個補碼答案:
01010111 |
+ 1 |
01011000 |
所以從115中減去27( 00011011 2 )的結果( 01110011 2 )使用二進制1的補碼給出答案: 01011000 2 或(64 + 16 + 8)= 88 10 。
然后我們可以看到使用One's Complement和添加過程可以相互減去有符號或無符號二進制數。二進制加法器(如TTL 74LS83或74LS283)可用于加或減兩個4位有符號二進制數或級聯在一起以生成帶有進位的8位加法器。
對符號的二進制補碼二進制數
兩個補語或2的補語因為它也被稱為,是另一個方法,如前一個符號幅度和一個補碼形式,我們可用于表示帶符號二進制數系統中的負二進制數。在二進制補碼中,正數與無符號二進制數完全相同。然而,負數由二進制數表示,當加到其對應的正等效時,結果為零。
在二進制補碼形式中,負數是其正數的2的補碼。使用與以前基本相同的過程減去兩個數字 A-B = A +(B的2的補碼),兩個補碼是一個補碼+1。
主要與前一個補碼相比,二進制補碼的優點是沒有雙零問題,而且生成有符號二進制數的二進制補碼要容易得多。因此,當數字以二進制補碼格式表示時,算術運算相對容易執行。
讓我們看看使用二進制補碼從上面減去兩個8位數115和27,我們從上面記得二進制等價物是:
二進制
115 10 : 01110011 2
27二進制的 10 是: 00011011 2
我們的數字是8位長,然后有2 8 數字可用于表示我們的值,在二進制中這等于: 100000000 2 或 256 10 。那么27 10 的兩個補碼將是:
(2 8 ) 2 -00011011 = 100000000 -00011011 = 11100101 2
第二個負數的互補意味著減法變得更容易添加兩個數,因此總和是: 115+(27的2的補碼):
01110011 + 11100101 =101011000 2
如前所述,第9個溢出位被忽略,因為我們只對前8位感興趣,因此結果是: 01011000 2 或(64 + 16 + 8)= 88 10 十進制,與之前相同。
有符號二進制數總結
我們已經看到,可以使用最高有效位(MSB)作為符號位來表示負二進制數。如果對 n位二進制數進行了簽名,則最左邊的位用于表示留下 n-1位的符號來表示該數字。
例如,在4位二進制數中,這只留下3位來保存實際數字。但是,如果二進制數是無符號的,則所有位都可用于表示數字。
帶符號二進制數的表示通常稱為符號幅度表示法如果符號位為“0”,則數字為正。如果符號位為“1”,則該數字為負數。在處理二進制算術運算時,使用負數的補碼會更方便。
補充是表示負二進制數的另一種方法。這種替代編碼系統允許通過使用簡單加法減去負數。
由于正符號幅度數始終以零(0)開始,因此其補碼始終以一(1)開始表示負數,如下表所示。
4位有符號二進制數比較
Decimal | 簽名幅度 | 簽名一個補語 | 簽名二的補語 |
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 |
二進制數的有符號補碼形式可以使用1的補碼或2的補碼。 1的補碼和二進制數的2的補碼很重要,因為它們允許表示負數。
2的補碼算法通常用于計算機處理負數,唯一的缺點是如果我們想用簽名的二進制數格式表示負二進制數,我們必須放棄以前的正數范圍。
-
二進制數
+關注
關注
0文章
12瀏覽量
7745
發布評論請先 登錄
相關推薦
評論