一 前言
小伙伴,你看代码的源码了吗?就比如HashMap的源码,我想工作几年的都应该看过,但里面涉及的二进制的基础知识你真的懂吗? 比如与运算,或运算,非运算,& | 这东西,计算时千万别说他是逻辑运算符。
二 运算符
与运算符(&)
预算规则:0&0=0;0&1=0;1&0=0;1&1=1
即:两个同时为1,结果为1,否则为0
例如:3&5
十进制3转为二进制的3:0000 0011
十进制5转为二进制的5:0000 0101
------------------------结果:0000 0001 ->转为十进制:1
即:3&5 = 1
与运算符,由于二进制上如果两个有一个不是1 那么就归零,所以他就可以有效的在两个数值运算后降低除数的值,源码中是有这么干的。或运算(|)
运算规则:
0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象,一个为1,其值为1。
例如:3|5 即 00000011 | 0000 0101 = 00000111,因此,3|5=7。
异或运算符(^)
运算规则:
0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个位为“异”(值不同),则该位结果为1,否则为0。
例如:3^5 = 0000 0011 | 0000 0101 =0000 0110,因此,3^5 = 6
三 结语
使用运算符可以增加算法的处理速度,但是在平时开发中还是很少看到的,在底层算法中应用就十分广泛了,了解他们之后才能更好的看源码哦小伙伴