Java学习07——原码、反码和补码

原码

十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。

原码的弊端

利用原码进行计算的时候,如果是正数完全没有问题。
如果是负数计算,结果就出错,实际运算的方向,跟正确的运算方向是相反的。

反码

反码出现的目的

为了解决原码不能计算负数的问题而出现的。

反码的计算规则

正数的反码不变, 负数的反码在原码的基础上,符号位不变。 数值取反,0变1, 1变0.

反码的弊端

负数运算的时候,如果不跨0,是没有任何问题的,但是如果跨0实际结果会有1的偏差。

补码

补码出现的目的

为了解决负数计算时跨0的问题而出现的。

补码的计算规则

正数的补码不变,负数的补码在反码的基础上+1.
另外补码还能记录一个特殊的值-128,该数据在1个字节下,没有原码和反码。

补码的注意点

计算机中的存储和计算都是以补码的形式进行的。

隐式转换

前面补0

强制转换

截断前面

其他的运算符

& 逻辑与

0为false 1为true
a&b

逻辑或

a|b

左移

<<
a << 2
向左边移动两位,尾部0部位

右移

a>>2
向右移动,高位补0或1 ,符号位根据符号位来补.

无符号右移

向右移动,高位补0

你可能感兴趣的:(javase,学习)