在计算机中,位与的符号是&,运算过程是false&false=false, true&false=false, true&true=true
故任何一个数&1的结果有:
0&1=0
1&1=1
2&1=0
3&1=1
…
…
…
1234&1=0
4321&1=1
可以看出一个奇数(十进制)
位与1
的结果是1
,一个偶数(十进制)
位与1
的结果是0
我们分析一下几个例子,3和987都是十进制数:
3&1
在计算过程是:
11
01
—
01
所以: 3&1=01=1
987&1
在计算过程是:
1111011011
0000000001
----------------
0000000001
所以: 987&1=0000000001=1
任何一个数
位与1,则1会在前面补上相应个0,然后和那个数
进行位与计算
,所以结果不是0就是1,因此,我们常常用一个数
&1
来判断一个数
是奇数或偶数。
实例:
1,比如在数据库中,我们获取所有奇数的id,就可以直接:
select id from mytable where id&1;
2,在编程中判断一个数是否为奇数:
int number = 789;
if (number & 1) {
print('此数为奇数')
} else {
print('此数为偶数')
}
小结
位运算是最靠近计算机底层的,所以计算效率特别高,尤其在数据量超大的情况下,优势很明显。
拓展
与或运算常常用于判断奇偶
移位运算常常用于倍数运算