有符号二进制数使用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浏览量
7720
发布评论请先 登录
相关推荐
评论