计算机二进制

来源:互联网 发布:雾社事件 知乎 编辑:程序博客网 时间:2024/05/21 14:59

计算机中的二进制是逢2进1的    0、1是基本的运算

数字在计算机中都是以二进制形式存储的,计算机在进行计算时是以二进制补码形式进行的。

对于正数而言原码、反码、补码一致



对于有符号的数而言:      java语言中都是有符号数,没有无符号数java 不像c c++一样拥有无符号数

二进制的最高为是符号位: 0表示正数,1表示负数

正数的原码、反码、补码都一样

负数的反码=它的原码符号位不变,其他位取反(0---->1,  1----->0)

负数的补码=它的反码+1

0的反码,补码都是0

计算机在运算是时都是以补码的方式来运算的。



负数的补码转回原码可以是     补码------>反码,  即补码减去1, 再反码--->原码 ,即符号位不变其余取反

在计算机运算是  与或非,异或,左移  右移都是对数的补码进行操作的

取反,与,或,异或,操作时连符号位一起运算

算术右移:  符号位不变低位溢出, 并用符号位补溢出的高位

算术左移:   符号位不变低位补0   

在计算机运算是  与或非,异或,左移  右移都是对数的补码进行操作的操作的结果也是补码形式的

如果计算的补码形式为正数,由于正数补码原码一样结果即为最终结果如果补码的计算结果为负数

则要将负数的补码形式转回原码才知道最终的结果

计算机中的运算举例:计算机计算     1-2=-1是如何算出来的??

计算机中运算都是以补码形式进行的!!1-2=1+-2=-1

1是正数                                              1的补码为   00000000 00000000 00000000 00000001

                                                            -2的原码为   10000000 00000000 00000000 00000010

-2是负数要先转为反码再转补码 -2的反码为  11111111 11111111 11111111 11111101

 负数的补码反码加1                       -2的补码为  11111111 11111111 11111111 11111110


              1的补码为   00000000 00000000 00000000 00000001

             -2的补码为   11111111 11111111 11111111 11111110

1+(-2)的补码结果为11111111 11111111 11111111 11111111

 

由于计算的补码结果最高位为负数,所以要进行补码到原码的转换

                                      1+(-2)的补码结果为11111111 11111111 11111111 11111111

负数补码-à反码即补码减去1         反码为11111111 11111111 11111111 11111110

反码-à原码符号位不变其余取反  原码为10000000 00000000 00000000 00000001

最后计算出1-2的结果为-1;

 

计算   ~2=3 如何计算?

2的补码为00000000 00000000 00000000 00000010 (与或非操作时符号位都要一起计算)

  取反为    11111111 11111111 11111111 11111101  (这结果为负数需要将补码转回原码)

  反码为    11111111 11111111 11111111 11111100

  原码为    10000000 00000000 00000000 00000011

最终结果:为-3

 

 

 

 

 

计算~-5=4如何计算??

-5的原码10000000 00000000 00000000 00000101

-5的反码11111111 11111111 11111111 11111010

-5的补码11111111 11111111 11111111 11111011

-5的取反00000000 00000000 00000000 00000100

最后的结果为正数,即补码原码一样所以结果为3









0 0