33和-33的原码、反码和补码分别是多少?(用八位二进制表示)

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-11
33和-33的原码、反码和补码分别是多少?(用八位二进制表示)

所有正数的原码、反码和补码,都是一样的,
十进制数33:
00100001

十进制数-33:
先把33转换成二进制:33D=0100001B
因为是负数,在最前面加上一个1,得到原码:1010 0001
反码:符号位不变,其余按位取反:1101 1110
补码:反码+1=1101 1111

33的2进制数为00100001,-33的原码是10100001,-33的反码是11011110,-33的补码是11011111

对于一个 8 位二进制数,它的原码、反码和补码定义如下:

- 原码:最高位表示符号位(0 表示正数,1 表示负数),其余位表示数值的绝对值。
- 反码:正数的反码与原码相同,负数的反码是对该数的原码除符号位外各个位取反。
- 补码:正数的补码与原码相同,负数的补码是该数的反码加 1。

因此,我们可以按照上述规则计算出 33 和 -33 的原码、反码和补码。具体来说,对于 33,它的二进制表示为 00100001(其中最高位为符号位,0 表示正数):

- 原码:00100001
- 反码:00100001
- 补码:00100001

对于 -33,它的二进制表示为 11011111(其中最高位为符号位,1 表示负数):

- 原码:11011111
- 反码:10100000
- 补码:10100001

因此,33 和 -33 的原码、反码和补码分别是:

| 数字 | 符号位 | 原码 | 反码 | 补码 |
| ---- | ------ | --------- | --------- | --------- |
| 33 | 0 | 00100001 | 00100001 | 00100001 |
| -33 | 1 | 11011111 | 10100000 | 10100001 |

需要注意的是,在使用补码进行计算时,计算机只需要执行一种加法运算就可以完成正数和负数的运算,这极大地提高了计算效率。另外,由于补码是唯一的,因此在计算机中通常采用补码进行数值运算。

计算机系统中,数值,一律采用补码表示和存储。

正数补码,就等于这个正数。

所以:[33]补码=33=0010 0001 (八位二进制)。

将其“减一、取反”,就是-33 的补码。

即得:[-33]补码=1101 1111。

-----

原码反码,在计算机中,都是不存在的。

计算机,根本就不用它们。

它们是多少,不必关心。



  • +33的原码,反码,补码
    答:若字长8位,+33d 的原码、反码、补码 都是 0010 0001b , 即21h
  • 原码反码补码的求解方法 能详细点的谢谢了,大神帮忙啊
    答:原码转反码:对于正数,原码与反码相同,对于负数,反码保持原码的符号位不变,而其他各位取反。 原码转补码:对于正数,原码与补码相同,对于负数,补码保持原码的符号位不变,而其他各位取反,然后在最低位加1。 补充: 举个例子: 67=2X33+1,33=2X16+1,16=2X8+0,8=2X4+0,4=2X2+0,...
  • 深入浅出:原码,反码,补码及减法
    答:的转换,其实也就知道什么是反码了,只是把它抽象出来了。6.减法到底是怎么做呢?说完了原码,反码和补码,回到最开始的问题,到底怎么运算才对啊?个位数都算错可丢人了。计算机内部采用补码来计算的。i. 首先我们要把需要计算的转换成补码 2的原码是:00000010,由于是正数,补码即为本身:00000010。...
  • c++中负数如何编码
    答:好的,到这里相信各位基本了解了负数的表示原理了,在这里我还想沟通一下求负数表示的另外一种方法,这就是很多书上提到的采用补码的方法 要求一个负数的二进制表示方式,可以先求出它的原码,然后每位取反得出它的反码,反码再加1得出补码 如:假设还是以8位二进制来表示带符号的整数 -56的原码是:...
  • C语言中二进制求补码过程中取反后再加1,那个1是怎么加的?跪求!
    答:你说的14 是正数,不用进行取反再加1来计算其补码,它的补码就是00001110 c语言中,原码补码反码都必须是二进制吗? 不需要,求补码是一种运算,参与运算的数值是整数就可以,不需要是二进制。但是计算机在内部处理的时候是转换成二进制进行处理的。C语言可以计算15的反码为-16,这个按照反码的定义...
  • 负数在内存中的二进制形式怎样存储
    答:首先声明在计算机中负数的存储是采用二进制补码的形式的;以“-1”为例,32位为基础:“-1”的反码为“1”,1的二进制编码为:00000000 00000000 00000000 00000001 取反: 11111111 11111111 11111111 11111110 加一: 11111111 11111111 11111111 11111111 ...
  • 请问怎么看一个数字为几进位制数? 比如117 为什么是十进位制数呢?_百...
    答:(2)反码 在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。 例如:[+45]反=[+45]原=00101101??[-32]原=10100000???[-32]反=11011111 (3)补码 在补码的表示中,正数的表示方法与原码相同;负数的补码在在其反码的最低...
  • -55的补码和33的补码相加
    答:11101001。负55的二进制表示是10110111,那么它的补码就是,最高位不变,剩下的取反加1,即为11001001,正数33的话原码等于反码等于补码,所以相加就是负22那么他的补码答案就是11101001。补码,计算机中数据以补码的形式存储,同样以补码的形式参与运算。
  • C语言问题求解?
    答:补码加1:1111 1111 0000 0000 0110 0110 0110 1010 除符号位取反(原码):1000 0000 1111 1111 1001 1001 1001 0101 由于最高位为1表示负数:所以上面表示 -(0000 0000 1111 1111 1001 1001 1001 0101)=-16750999 所以:这句话输出 -16750999 6、执行*d.arr = 825373492;后的内存分布 将...
  • 微机单选题
    答:18.B 19.A 20.D 21.C 22.D 23.B 24.C 25.B 26.B 27.C 28.B 29.A 30.D 31.A 32.C 33.B 34.B 35.C 36.D 37. A 38.C 39.D 40.C