补码10000000表示多大?补码10000000的原码是多少啊,还是10000...
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)
你可能会问
:
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个
到这里你可能已经了解得差不多了,但还是有点迷糊,那再举些说明的例子:
-0.1101
原码:1.1101
反码:1.0010
//负数时,反码为原码取反
补码:1.0011
//负数时,补码为原码取反+1
移码:0.0010
//原数+1
-1011
原码:11011
反码:10100
//负数时,反码为原码取反
补码:10101
//负数时,补码为原码取反+1
移码:00101
//原数+10000
1011
原码:01011
反码:01011
//正数时,反码=原码
补码:01011
//正数时,补码=原码
移码:11011
//原数+10000
0.1101
原码:0.1101
反码:0.1101
//正数时,反码=原码
补码:0.1101
//正数时,补码=原码
移码:1.1101
//原数+1
从以上您
可能已经观察出来了,其实让人不理解的原因在于:
无法用8位的源码表示
这个数的真值是
-2^7
源码的表示范围是
-(2^7
-
1)到
2^7
-
1
补码的表示范围是
-2^7
到
2^7
-
1
补码要多出一个数,而这个数就是你问的10000000
在源码里面00000000和100000000都是表示0
这样比较浪费,在补码里面,就把100000000当做
-2^7
,以扩大补码表示范围
以上回答希望对你有用
2024-11-04 广告
补码 10000000,表示多大? 原码是多少?
可以肯定的说:八位的原码,是不存在的。
因为,这个补码,是代表的十进制数-128 的。
而-128,有八位的补码,并没有八位的原码和反码。
因为,原码和反码的定义,都是有缺陷的:
一个数字零,它们却都定义了两个编码!
所以,八位的原码反码,只能表示-127 ~ +127。
无法表示-128。
因此,用“取反加一”求-0 或-128 的补码,都是行不通的。
-------------------------
求补码的正规做法,是使用定义式:
当 X >= 0, [ X ]补 = X; 零和正数不用变换。
当 X < 0, [ X ]补 = X + 2^n。 n 是补码的位数。
这个定义式,是通用的。你可以在书上找到的。
那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。
所以,八位的补码 1000 0000,就是代表数值-128。
补码 1000 0000 表示多大?
补码 1000 0000 的原码是多少啊?还是 1000 0000 吗?
-------------------------
如果字长 n = 8,补码 1000 0000,就表示-128。
而在字长 8 位时,-128 并没有原码。
-------------------------
在计算机系统中,数值,一律采用补码表示和存储。
之所以不使用原码和反码,是因为原码和反码表示法存在不合理之处,它们都为零设计了两个不同的编码:正零和负零。
因此,在计算机系统中,原码和反码实际上并不使用。
因为计算机中并没有原码和反码,所谓的“取反加一”方法,实际上也是无法操作的。
-------------------------
八位补码与其代表的十进制数,对应如下:
补码和真值之间,可以直接转换。 过程十分简单,只需记住补码的最高位是负数这一关键点即可轻松进行转换。
广告 您可能关注的内容 |