java <<左移、>>右移运算符都是针对二进制进行运算的,示例如下:
int x = 2 << 3;
//2 的二进制: 10
// <<左移符号 -> 左移 3 位 ,2的二进制后加 3 个0 => 10000 转为十进制 =2^4*1 + 2^3*0 + 2^2*0 + 2^1*0 + 2^0*0 = 16
int y = x >> 3;
//x 的二进制: 10000
// >>右移符号 -> 右移 3 位 ,x的二进制后去 3 个0 => 10 转为十进制 =2*1 + 1*0 = 2
System.out.println("x=" + x);
System.out.println("y=" + y);
// 1010=10; 1011=11; 1110=14; 1111=15
int a = 10 >> 3;
int b = 11 >> 3;
int c = 14 >> 3;
double d = 15 >> 3;
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
System.out.println("d=" + d);
经过测试发现,可以当作左移 x 位,便是在该数的二进制后添加 x 个0或乘以 2 的 x 次方,右移 x 位,便是将该数的二进制后 x 个数(无论 0 或 1)删掉(若不够删则结果为0)或除以 2 的 x 次方;
学习路上,理解若有误请大佬指正!