首先我们知道整数在计算机中是以二进制补码的形式存储的,而正整数的补码就是它的二进制原码本身。所以我们可以在这个层面上对数字进行运算。
再来看几个十进制数的二进制模式(8位):
2 :0000 0010
4 :0000 0100
8 :0000 1000
我们发现,2的非负整数次幂的二进制所有位中都只有一个1。
接下来介绍按位与运算符 :“&”
按位与运算符功能是将两个数对应的各位相与。而每一位上不是1就是0。
1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
0 & 1 = 0
简单来说,就是 & 两边的数字至少有1个0时,结果就为0。
而 1 :0000 0001
3 :0000 0011
5 :0000 0101
所以,2 & 1 = 0
4 & 3 =0
接下来展示代码:
#includeint main(void) { int number; printf("请输入您想判断的数字:"); scanf("%d",&number); if ((number>0) && (number & (number-1))==0) { printf("Yes!n"); } else { printf("No!n"); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)