A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求神助!

8 个回复

正序浏览

太坑了,没看清题目,那就楼上那位说的那样,&1=1就是奇数,&1=0就是偶数,&运算符比%运算起来快
回复 使用道具 举报
longsha6612 发表于 2015-3-7 22:07
任何整数%2,如果=0就是偶数,否则就是奇数

看清题目。
回复 使用道具 举报
任何整数%2,如果=0就是偶数,否则就是奇数
回复 使用道具 举报
看到回复我惊呆了,默默的溜走
回复 使用道具 举报
#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;
}

回复 使用道具 举报
设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.
不知道这样说,你能不能明白。

评分

参与人数 1黑马币 +20 收起 理由
西西小枫 + 20

查看全部评分

回复 使用道具 举报
楼上正解!在内存中数是以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
回复 使用道具 举报
a&1==1奇数
a&1==0偶数
回复 使用道具 举报 2 0
您需要登录后才可以回帖 登录 | 加入黑马