计算机中的二进制补码是如何表示正负数的补码的?
发布网友
发布时间:2023-03-26 22:27
我来回答
共1个回答
热心网友
时间:2023-10-11 09:50
1、正数的补码表示:
正数的补码 = 原码
负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or
= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
+97原码 = 0110_0001b
+97补码 = 0110_0001b
-97原码 = 1110_0001b
-97补码 = 1001_1111b
2、纯小数的原码:
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。
以0.64为例,通过查阅可知其原码为0.1010_0011_1101_0111b。
操作方法:
将0.64 * 2^n 得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。
此处将n取16,得
X = 41943d = 1010_0011_1101_0111b
即0.64的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.64d = 0.1010_0011_1101_0111b 与查询结果一致。
再实验n取12,得
X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。
3、纯小数的补码:
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.64为例,其原码为1.1010_0011_1101_0111b
则补码为:1.0101_1100_0010_1001b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4、一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b
笔算过程:
-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。
则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原码符号位不变} + {数值位按位取反后+1} 方法
5、补码得到原码:
方法:符号位不动,幅度值取反+1 or符号位不动,幅度值-1取反
-97.64补码 = 1001_1110(.)0101_1100_0010_1001b
取反 = 1110_0001(.)1010_0011_1101_0110b
+1 = 1110_0001(.)1010_0011_1101_0111b 与查询结果一致
6、补码的拓展:
在运算时必要时要对二进制补码进行数位拓展,此时应将符号位向前拓展。
-5补码 = 4'b1011 = 6'b11_1011
ps.原码的拓展是将符号位提到最前面,然后在拓展位上部0.
-5原码 = 4‘b’1101 = 6'b10_0101,对其求补码得6'b11_1011,与上文一致。
扩展资料:
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
计算机中的二进制补码是如何表示正负数的补码的?
正数的补码 = 原码 负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or = {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反} 以十进制整数+97和-97为例:+97原码 = 0110_0001b +97补码 = 0110_0001b -97原码 = 1110_0001b -97补码 ...
二进制数的正负如何表示?
任何数在内存中都是以补码的形式存在(其中正整数:原码=反码=补码;负整数:原反码=原码(最高位不变,其余按位取反);补码=反码+1)。 针对第二个问题:如果不满八位,系统肯定是补足八位。对于正整数而言,最高位全部填满0.对于负整数而言,按照“原反码=原码(最高位不变,其余按位取反)...
二进制数字补码
在计算机科学中,补码是用来表示有符号整数的二进制形式。它不仅可以表示正数,还可以表示负数,甚至零。这是通过约定一个最高位为1表示负数,为0表示正数或零来实现的。对于正数和零,补码就是其原码。而对于负数,补码是其反码加1。这种表示方法解决了在计算机中直接处理带有正负数的复杂问题。补码的计...
二进制用补码做加减法怎么实现,举个例子??
正数的补码是原码;负数的补码是符号位(最高位)不变,其余位按位取反加1.用补码做减法运算时,结果出现的情况有正、0、负:结果为正或者0时,补码是原码,直接转换成10进制即可;结果为负时,需要将结果减1再保持符号位不变按位取反。例如:1的原码是0000 0001,补码也是0000 0001 -2的原码是...
关于二进制负数的补码
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。例子:求-5的补码,过程如下:-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011),所以-5的补码是11111011。数0的...
二进制的原码、补码、反码详解
计算机中使用二进制,补数,就改称为【补码】。常用的八位二进制是:0000 0000~1111 1111。它们代表了十进制:0~255,周期就是 256。那么,-1,就可以用 255 = 1111 1111 代替。所以:-1 的补码,就是 1111 1111 = 255。同理:-2 的补码,就是 1111 1110 = 254。继续:-3 的补码,就...
二进制中怎样识别负数
在二进制数里,最高位0表示正数,1表示负数。为了便于加减计算,正负数用补码来表示,正数的补码就是原码;负数的补码是原码的反码再加1。如八位二进制数,它的表示数的范围是:-128到+127。+18 --- 00010010 -18 --- 反码为:11101101 补码为:11101110 ...
二进制补码啥意思?多举几个实例
答案明确:二进制补码是计算机中对正负数进行编码的一种方式。它通过特定的转换规则,将二进制数的正数形式和负数形式统一在相同的编码中,方便计算机内部处理。补码能够简化计算机中的加减运算,提高处理效率。在计算机内部,所有的数都是以补码的形式存在的。下面是具体的解释和实例。详细解释:1. 补码的...
负数的补码在计算机中是如何表示的?
对于十进制的数-27,在寄存器内是:1,1100101。计算机存储负数采用补码的存储形式,所以我们要先计算出-27的原码形式:运用十进制转二进制的方法转为二进制形式为:1,0011011。然后再转化为补码,原码转化为补码的方法为将原码初符号位全部取反然后再加1。所以得出存储的补码形式:1,0011011→1,1100100+...
补码和反码的正负分别怎么表示?
在计算机内,定点数有3种表示法:原码、反码和补码 所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;...