要判断一个数是奇数还是偶数,一般首先想到的都是对2取余,但其实有更高明的算法。
首先咱们要知道一个知识点:偶数的二进制末位为0,奇数的二进制末位为1。
这是进位制本身的规则决定的,二进制是“逢二进一”。如果末位为0,说明它“逢”的都是二,没有零头,即它一定能被2整除。
同时,如果八进制、十进制、十六进制的末位为0,就表示这个数能分别被8、10、16整除。
明白了这个知识点,咱们只需要两步就能判断出一个数的奇偶;
①取要判断的数的二进制的末位。
②判断末位是0还是1。
第①步没有必要先将这个数转化为二进制,因为不管你输入的数是几进制的,在计算机内部都是按二进制计算的。要取出二进制的末位,只需要用到一个简的位运算:用这个数“& 1”。
按位与(&)的运算规则是只有当两个对应二进制位都为1时,结果才为1,否则结果为0。1表示只有末位是1,前面都是0,所以不管一个二进制数有多少位,“&1”的结果必然只剩末位数。
比如:
代码如下:
#include<stdio.h>
int main(){
int i;
scanf("%d", &i);
if((i&1)==0){
printf("even number\n");
} else {
printf("odd number\n");
}
return 0;
}