计算机中的二进制:

一些固有的概念不介绍,直接更加形象例子的介绍:

比如:

十进制的1   转换为二进制就是   0 0 0 0 0 0 1       2的0次方=1

十进制的-1   转换为二进制就是  0 0 0 0 0 0 1    

高位:其中红色标记的是高位,1是负数,0为正数(在进行转换的时候这个只代表正负,不作改变)

原码:一个整数按绝对值大小转换成的二进制数称为原码

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码;(取反操作:1变0,0变1)

补码:反码加1称为补码。

以-2为例子:(因为正数的原码补码反码都是一样的,所以不再描述)

-2的原码:  1 0 0 0 0 0 1 0 

--2的反码: 1 1 1 1 1 1 0 1

 -2的补码: 1 1 1 1 1 1 1 0   反码加上1,2进制遇二进一(计算机是通过补码进行运算的,所以补码非常的重要);

java 其实是按照补码进行运算的

过程为:原码==》反码==》补码==运算=结果==》补码==》反码==》原码

以-3+1=-2为例

-3   1 0 0 0 0 0 1 1     --> 原码

      1 1 1 1 1 1 0 0     --> 反码   ==原码取反

   1 1 1 1 1 1 0 1      --> 补码    ==反码+1(补码最终是参与运算的,所以这个作为-3的最终的运算结果)

1 0 0 0 0 0 0 0 1      --> 1的补码(前面已经概述了。整数的补码和原码一样)

   1 1 1 1 1 1 1 0     --> 结果是补码,按照步骤应该转换为原码,

      1 1 1 1 1 1 0 1    --> 反码

      1 0 0 0 0 0 1 0    -->原码  转换为为  -2

在执行java中的位运算的时候,无疑就是&  |  ~  或者别的

这里作介绍

& :按位与 两位全为1,结果为1

 比如在作位运算的时候: -3 & 1

 1 1 1 1 1 1 0 1      --> -3 补码 

& 0 0 0 0 0 0 0 1      --> 1的补码

 ----------------------------------------

   0 0 0 0 0 0 0 1     --> 结果为 1 

上述就是所表示与运算,其实其他的运算都是一样的,

介绍一下  ~  运算

.~ :按位取反 :所有的0变成1,所有的1变成0 (仅限于一个表达式使用)

 这个是只代表一个数的运算

 1 1 1 1 1 1 0 1      --> -3 补码 
-----------------------------------------

 0 0 0 0 0 0 1 0      --> 2 

 

>>: 带符号右移位,符号位(高位)为0,补0,符号位为1,补1 ,溢出位置舍去

 0 0 0 0 1 1 0 0    12

-----------------------------------------12>>2

0 0 0 0 0 0 1 1     3

负数>>   -12>>2

1 0 0 0 1 1 0 0   -12   原码

------------------------------------------

1 1 1 1 0 0 1 1    反码

------------------------------------------

1 1 1 1 0 1 0 0    补码

------------------------------------------

1 1 1 1 1 1 0 1    移动后的补码

------------------------------------------ 

1 1 1 1 1 1 0 0   反码=上一步-1

------------------------------------------

1 0 0 0 0 0 1 1     原码=上一步取反    -3

------------------------------------------