求(-138)10 原码、反码和补码。要求有详细的步骤。
发布网友
发布时间:2022-04-23 06:25
我来回答
共3个回答
热心网友
时间:2023-09-15 15:15
(-138)10
求原码→将138用2除,反向取余数,再在最左边加符号位"1"就得到-138的原码:"1"1000
1010→1
1000
1010。
将原码1
1000
1010除符号位外按位取反,则得到反码:1
01110101。
将反码1
01110101加1,符号位不变得补码:101110110。
一个字节是8位二进制,而这个数是9位二进制了,所以要在机器中存放至少要两个字节;这时要将符号位扩展到高字节满字节,即:
原码:1111
1111
1000
1010
反码:1111
1111
0111
0101
补码:1111
1111
0111
0110
热心网友
时间:2023-09-15 15:15
将原码1
1000
1010除符号位外按位取反,则得到反码:1
01110101。
将反码1
01110101加1,符号位不变得补码:101110110。
一个字节是8位二进制,而这个数是9位二进制了,所以要在机器中存放至少要两个字节;这时要将符号位扩展到高字节满字节,即:
原码:1111
1111
1000
1010
反码:1111
1111
0111
0101
补码:1111
1111
0111
0110
热心网友
时间:2023-09-15 15:16
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。
以下都以8位整数为例,
原码就是这个数本身的二进制形式。
例如
1000001
就是-1
0000001
就是+1
正数的反码和补码都是和原码相同。
负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。
为什么要设立补码呢?
第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补
第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)
有人会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个