黑马程序员技术交流社区

标题: 怎么用位与 & 运算判断一个整数的奇偶性?? [打印本页]

作者: Lbabywei1988    时间: 2015-3-4 21:58
标题: 怎么用位与 & 运算判断一个整数的奇偶性??
求神助!
作者: 不爱不诺    时间: 2015-3-5 08:16
a&1==1奇数
a&1==0偶数

作者: itheima2xy    时间: 2015-3-5 09:35
楼上正解!在内存中数是以2进制存在,比如:
十进制0 ----------------- 0000 0000
十进制1 ----------------- 0000 0001
十进制2 ----------------- 0000 0010
十进制3 ----------------- 0000 0011
十进制4 ----------------- 0000 0100
                      。
                      。
                      。
总结出一个规律:
奇数最低位都为1,偶数最低位都为0
而十进制1的最低位位1,其他位都为0
所以奇数&1的结果都为1,偶数&1的结果都为0
作者: 悟饭    时间: 2015-3-5 09:45
设a为整数,那么通过判断a&1的结果就可以知道a是奇数还是偶数了。
因为1的二进制为0001, 任何偶数的二进制的最低位是0,而任何奇数的二进制位的最低位是1,
所以a&1的结果如果是0,那么a是偶数,如果是1,那么a奇数。
例如:a = 8. 因为8 的二进制为 1000,那么a&1 = 1000 & 0001 结果为0.
如果a = 11. 因为11的进制为1011,那么a&1 = 1011 & 0001结果为1.
不知道这样说,你能不能明白。
作者: 如此先生    时间: 2015-3-5 09:57
#include <stdio.h>
int main()
{
   
    int a = 15;
   
    a&1 == 1 // 奇数
    a&1 == 0 // 偶数
   
    /*
    if (a%2) {
        printf("奇数\n");
    } else {
        printf("偶数\n");
    }*/
   
    //a%2==0?printf("偶数\n"):printf("奇数\n");
   
    //a%2?printf("奇数\n"):printf("偶数\n");
    return 0;
}


作者: 风中一场梦    时间: 2015-3-5 14:39
看到回复我惊呆了,默默的溜走
作者: longsha6612    时间: 2015-3-7 22:07
任何整数%2,如果=0就是偶数,否则就是奇数
作者: 悟饭    时间: 2015-3-7 22:12
longsha6612 发表于 2015-3-7 22:07
任何整数%2,如果=0就是偶数,否则就是奇数

看清题目。
作者: longsha6612    时间: 2015-3-7 22:16
悟饭 发表于 2015-3-7 22:12
看清题目。

太坑了,没看清题目,那就楼上那位说的那样,&1=1就是奇数,&1=0就是偶数,&运算符比%运算起来快




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2