计算机为什么需要补码和反码 ?正数的补码与原码相同;负数的补码为该数的反码加 1是正确的吗?

[更新]
·
·
分类:互联网
1610 阅读

?正数的补码与原码相同;负数的补码为该数的反码加

?正数的补码与原码相同;负数的补码为该数的反码加 1是正确的吗?

1是正确的吗?

正确。
1. 原码
最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。
原码其实是最容易理解的,只不过需要利用二进制中的第一位来表示符号位,0表示正数,1表示负数,所以可以看到,一个数字用二进制原码表示的话,取值范围是-111 1111 ~ 111 1111,换成十进制就是-127 ~ 127
2. 反码
正数的反码与原码一致;负数的反码是对原码按位取反,只是最高位(符号位)不变。
3. 补码
为了解决反码的问题就出现了补码。
正数的补码与原码一致;
负数的补码是该数的反码加1。

机器中为什么要用补码?有什么好处?

为了便于硬件逻辑电路的实现,高电平表示1,低电平表示0 计算机中的数值用机器数来表示及运算,而这个数本身称作真值。 机器数包括:原码、反码、补码、…… . 机器数用补码表示的好处: 原码简单,适用于乘除运算,但用原码表示的数进行加减法运算比较复杂。 补码,减法运算可以用加法来实现,例如 [X-Y]补 [X]补 [-Y]补, 且数的符号位也可以当作数值一样参与运算,便于运算结果的正负及是否溢出判断。 因此在计算机中采用补码来进行加减及乘除运算。

计算机组成原理补码1.0000和10000的原码分别是什么?要详细解释?

1.0000和10000本就是原码。8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值,如: -0.1001原码表示为1.1001,反码为1.0110,补码为1.0111;-1的补码为1.0000000。若数据x的形式为xx0.x1x2…xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为:一般说来,如果最末位xn 1,前面各位都为0,则数的绝对值最小,即|x|min 2^(-n)。如果各位均为1,则数的绝对值最大,即|x|max1-2^(-n)。所以定点小数的表示范围是:2^(-n)≤|x|≤1 -2^(-n)。扩展资料:由于“编码总位数为8”的限制,真值-128无法用原码、反码来表示,似乎不能用上述规则来求解补码,但实际上是可行的——只要不管它的最高位即可,操作办法如下:将128化为二进制为:1 0000000,最高位为1,可以只对舍去最高位后剩余的7位进行处理即可,首先取反得:1111111,加1得:1 0000000,最高位有进位需丢弃,即得:0000000,加上符号位就得补码:1 0000000。又如,当编码总位数为4时,真值X 0.101的原码、反码、补码均为:0 101。真值X-0.101的原码、反码、补码依次为:1 101、1 010、1 011。同理,特例,-1的补码为:1 000。在定点小数中,小数点隐含在第一位编码和第二位编码之间。按此规则,任何一个小数都可以被写成 :N NS . N-1 N-2 … N-M。如果在计算机中用m 1个二进制位表示上述小数,则可以用最高(最左)一个二进制位表示符号(如用0表示正号,则1就表示负号),而用后面的m个二进制位表示该小数的数值。小数点不用明确表示出来,因为它总是固定在符号位与最高数值位之间,已成定论。定点小数的取值范围很小,对用m 1个二进制位的小数来说,其值的范围为:|N| ≤ 1-2^(-m)  即小于1的纯小数,这对用户算题是十分不方便的,因为在算题前,必须把要用的数,通过合适的 比例因子化成绝对值小于1的小数,并保证运算的中间和最终结果的绝对值也都小于1,在输出真正结果时,还要把计算的结果按相应比例加以扩大。