目录
一、 二进制、八进制、十六进制转换成十进制
0b110001100 转成十进制 4+8+128+256=396
02456 转成十进制 6+40+256+1024=46+1280=1306
0xA45 转成十进制 5+64+16*16*10=69+2560=2329
1.二进制的最高位是符号位:0表示正数,1表示负数
2.正数的原码、反码、补码都一样(三码合一)
3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
4.负数的补码=它的反码+1,负数的反码=它的补码-1
5. 0的反码,补码都是0
6. java没有无符号数,换言之,java中的数都是有符号的
7. 在计算机运算的时候,都是以补码的方式来运算的。
8. 当我们看运算结果的时候,要看他的原码
二、位运算符
java中有7个位运算符(&、|、^、~、>>、<<和>>>)分别是按位&、按位或|、按位取反~,它们的运算规则是
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个为1,结果为1,否则为0
按位异或^:两位一个为0,一个为1,结果为1,否则为0
按位取反~:0->1,1->0
比如: 2&3=? ~-2=? ~2=? 2|3=? 2^3=?
1.计算机计算2&3的过程
第一步:先得到2的补码=> 2的原码 00000000 00000000 00000000 0010
2的补码 00000000 00000000 00000000 00000010
第二步: 再求3的补码 3的原码 00000000 00000000 00000000 0011
3的补码 00000000 00000000 00000000 00000011
第三步:按位$
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
____________________________________________
第四步:00000000 00000000 00000000 00000010 & 运算后的补码
运算后原码是 00000000 00000000 00000000 00000010
结果为2