《深入理解计算机系统》上的一道题目,关于位的。

来源:互联网 发布:linux的安全设置 编辑:程序博客网 时间:2024/05/07 19:56

写一个C表达式,在下列描述的条件下产生1,而在其他情况下得到0。假设x是int类型。

A.x的任何位都等于1。

B.x的任何位都等于0。

C.x的最高有效字节中的位都等于1。

D.x的最低有效字节中的位都等于0。

代码应该遵循位级整数编码规则,另外还有一个限制,你不能使用相等(==)和不相等(!=)测试。

#include <stdio.h>int main(int argc, char *argv[]){    int x, num[4];    int i;    num[0] = 0xffffffff;    num[1] = 0x00000000;    num[2] = 0xff000000;    num[3] = 0xffffff00;    for(i = 0; i < 4; i++){            x = num[i];        if (            !~x ||        /* all bits are one */             !x ||        /* all bits are zero */            !~(x | 0x00ffffff) ||    /* most significant byte is 0xff */            !(x & 0x000000ff)    /* least significant byte is 0x00 */            ) {            printf("%d is 1\n", num[i]);        } else {            printf("%d is 0\n", num[i]);        }    }    return 0;}

原创粉丝点击