常量(原码、反码、补码)

有符号数据表示法

·在计算机呢内,有符号数有3种表示法:原码、反码、补码。所有数据的运算都是采用补码进行的。

·原码,就是二进制定点表示法,及最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

·反码,整数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

·补码,整数的补码与其原码相同;负数的补码是在其反码的末位加1.。


我们通常在用计算机的时候只知道3+7=10,但你不知道是计算机怎么运算的。计算机在操作的时候,都是采用数据对应的二进制的补码来计算的。

我准备用原码,反码,补码来分别表示+7,-7.

首先我们得出7的二进制:111。

原码:      

             符号位            数值位

+7             0                0000 111           

-7              1                0000  111

最高位为符号位,“0”表示正,“1”表示负,所以+7是0,-7就是1,其他是数值位。他们之间最大的区别就是符号位不相同。我是用一个字节来表示,上面只有4位,所以还要补齐4位凑齐8个字节。在其前面补4个0.


反码:

         正数的反码与原码相同。负数的反码与原码是符号位不变,数值位取反,就是1变0,0变1.。

                   符号位         数值位

+7                  0            0000 111

-7                   1            1111 000

   

补码:

           正数的补码与原码相同。负数的补码是在反码的基础上加1。要想得到补码先要有原码然后得出反码,最后在得出补码。

                     符号位      数值位

+7                    0            0000 111

-7                     1            1111 001

            以上就是-7和+7在内存的真实存储就是这样的。正数的原、反、补都是一样的,变化的是负数。

下面来两个练习

1.已知某数X的原码为1011 0100B,试求X的补码和反码。

2.已知某数X的补码1110 1110B,试求其原码。


1.

原码:1011 0100,首先要把它分开,分成符号位和数值位。    

                  符号位      数值位

原码:           1            011 0100

反码:           1            100 1011

补码:           1            100 1100      

最后这个补码有一点要注意(这是二进制,逢二进一),在末位上加1,这里的1+1=2,所以它要进一位变成0,前面这里也是1它加1也是2,所以也要变成0,最后就变成了100 1100。


2.

这里和上面也是一样,首先把它分开。

                  符号位     数值位

补码:            1          1101 110

反码:            1          1101 101

原码:            1          0010 010

你可能感兴趣的:(常量(原码、反码、补码))