今天在看HashMap源码时发现有几个没见过的运算符 " ^","&","<<<",">>>"。总结如下。
1. "^"异或运算符
图一:
以上代码运行的结果为1和0;
你会发现运算的规则是:两个数进行异位运算时,两个变量值相同时,则值是0,其中一个变量为0,则值是另外一个变量的值。
图二:
以上代码运行的结果为3,2,1;
你会发现:第5行和第6行像除法是吧,这么以为你就错了。
异或的运算规则: a的值为1转换成二进制的值为1,b的值为2转换成二进制的值为10,然后将a的第一位数和b的第二位数对比,将a的第二位数和b的第二位数对比,以此类推。
int a = 01 int b = 10 参照图1运算规则
运算结果为11;转换成十进制就是3;
2. "&"位于运算符
位于运算符也是对两个数的二进制同位进行比较,两个数的同位数的值同时为1则为1,否则为0;
如:10&2
10的二进制:1010; 2的二进制:0010;
值则为:0010=2;
3. ">>>"无符左移运算符
无符左移运算符 是对一个值向左移多少位。
如:
a的二进制值:10100; 向左移两位
值则为:101;
打印结果:5;
当然你也可以用数学解决:a/(2的b次方);
4. "<<"右移运算符
右移运算符 是对一个值向最右边加多少个0。
如:
a的二进制值:10100; 向右移两位
值则为:1010000;
打印结果:80;
当然你也可以用数学解决:a*(2的b次方);