位运算:
电脑不会错位 只会升位 溢出不算
列长度为4
0011 3
+1111 -1
1 0010 最前面一个1溢出不算去掉最前面一个1得到结果2
电脑上最低长度byte八位
11111111 -1 最大的负数
10000000 -128 最小负数
0没有补码 所以负数位比正数位多1 即-128~127
<<左移 3<<2==3*2*2==12
长度4位 0011>>2==1100==12
>>算术右移 3>>1==1==3/2
长度4位 0011>>1==0001==1
长度八位不能表示128最多只能127
10000000取反~01111111加1 10000000为-128
111000 56 11100>>2==001110==56/4==14
>>>逻辑右移
最前位用0补齐
0xa2>>>2==162/4==40
0xa2==10100010>>2==00101000==40
长度为8 前面用0补齐
当0xa2给定形势的时候 byte(0xa2)>>2
>>>只能用于int和long类型当用到short和byte的值时自动生成int型
当byte生成int型时int有32个字节最前面一个数是符号位 右移两位用0补齐
byte(0xa2)>>2==00111111111111111111111100101000(数字比较大用计算器算)
原文:https://www.cnblogs.com/liugangjiayou/p/10493372.html