Task1:二进制位操作符
#include <stdio.h>
#define PRINT(int) printf(#int " = %d\n",int)
int main(void)
{
int x,y,z;
/*
优先级:位运算符中:& > |
位运算符& > 逻辑运算符&&
*/
x = 03; y = 02; z = 01;
PRINT(x | y & z); //0011 | 0000 = 3
PRINT(x | y & ~ z); //0011 | 0010 = 3
PRINT(x ^ y & ~ z); //0011 ^ 0010 = 1
PRINT(x & y && z); //2 && 1 = 1
x = 1; y = -1;
PRINT(! x | x); //((!x) | x)=false | x = 1
// http://www.bianceng.cn
PRINT(~ x | x); //1111 = -1
PRINT(x ^ x); //0001 ^ 0001 = 0
x <<= 3;PRINT(x); //左移n位效果上看成乘以n个2 = 8
y <<= 3;PRINT(y); //………………………………&hellip ;= -8
y >>= 3;PRINT(y); //右移n位效果上看成除以n个2 = -1
return 0;
}
输出结果:
x | y & z = 3
x | y & ~ z = 3
x ^ y & ~ z = 1
x & y && z = 1
! x | x = 1
~ x | x = -1
x ^ x = 0
x = 8
y = -8
y = -1
时间: 2024-09-18 20:19:48