一个整数 n,n&1
这个表达式 可以用来 判断 a 的奇偶性。
二进制的末位为 0表示偶数,末位为 1表是奇数。
使用n%2
来判断奇偶性 和n&1
是一样的作用。
n%2和n&1效果一样,速度也一样,不可能快很多,因为任何数对2的指数的取模运算,编译器一般会将其优化为位运算,对于非2的取模运算,位运算确实更快
按位与:& 将参与运算的两操作数各对应的二进制位进行与操作, 只有对应的两个二进位均为1时,结果的对应二进制位才为1,否则为0
记住:在做位运算时,位数不够的数,自动在 前面补 0 。比如:
21 & 1 :10101 & 00001 = 00001 = 1
16 & 1 :10000 & 00001 = 00000 = 0
事实证明:偶数的二进制的末尾 为0,奇数的二进制的末尾 为1
十进制m 转换 n进制方法: m 一直除 n,每相除一次,m就等于商,直到商为0,然后余数反排 即可。
15的二进制:15/2=7 余1
7/2=3 余1
3/2=1 余1
1/2=0 余1
余数反排 即是 15的二进制:1111参考阅读:
位运算之判断奇偶性&1:
java程序性能优化:
java简单的判断奇偶数方法(i & 1) != 0 i为奇数:https://blog.51cto.com/qq445493481/1658144
基本的逻辑运算包括与 或 非 三种。其运算真值可记忆为:
与,相当于乘,全一得一。
或,相当于加,有一得一。
非,取反,0与1互换。
例如:
- 1010与1100的话,1与1为1(1乘1),0与1为0(0乘1),1与0为0(1乘0),0与0为0(0乘0),结果是1000,就相当于乘,全是1结果才为1。
- 1010或1100的话,1或1为1(1加1为2,但是最大为1,所以为1),0或1为1(0加1),1或0为1(1加0),0或0为0(0加0),结果是1110,就相当于加,只要有1结果就是1。10取非的话,1的非为0(1的反向),0的非为1(0的反向),结果是01,就相当与取反,只要是0就换成1,是1就换成0。
真值一般都是不为 0的值都是真值,计算机的运算都是将你输入的10进制数字先转成0与1组成的二进制数,然后根据你的运算规则,如上运算最后再转成你能看懂的10进制数字,另外在程序的条件 if 等地方也是通过这种来判断真与假的。