java二进制,原码、反码、补码、位运算

1.二进制计数法的概念 
人们在日常生活中和生产实践中,我们接触到越来越多的数字,创造了分组计数的制度.而我们的生活中,一般采用了"满十进一"的十进制计数法,
我们现在已经熟悉并经常运用这一种计数法了.但也有采用其他计数法.如二进制,六进制,十六进制等计数法.现在就来讲一讲"二进制"和"十进制"的关系 2.十进制和二进制数的互化 (1)化十进制数为二进制数 <1>比较小的十进制数为二进制数可以用观察法. 例:化45为二进制数 因为2的0次方,1次方,2次方~~~10次方分别等于1,2,4,8,16,32,64,128,256,512,1024. 所以 45=32+8+4+1=2⑤+2③+2②+1=1*2⑤+0*2④+1*2②+0*2①+1*1=101101(二进制) <2>一般化法 利用短除法(通常叫做"二除取余法") (2)化二进制数为十进制数 这是比较方便的,只需把二进制是写成展开式;计算即得.

3对于有符号的数
二进制的最高位时符号位:0表示正数,1表示负数
正数的原码,反码,补码都一样
负数的反码=它的原码符号位不变,其它位取反
负数的补码=它的反码+1
0的反码,补码都是0
java中的数都是有符号的

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

java中有4中位运算,分别是按位与&,按位或|,按位异或^,按位取反。
&:两位全为1,结果为1
|:两位有一个为1,结果为1
^:两位有一个为1,一个为0,结果为1
取反:0取反位1,1取反位0

java中有3个移位运算符
>> 算术右移:低位溢出,符号位不变,并用符号位补溢出的高位
<<算术左移:符号位不变,低位补0
>>>逻辑右移:低位溢出,高位补0

你可能感兴趣的:(java)