#include <stdio.h> //fopen函数的包
int main()
{
unsigned char ch = 'a';
printf("二进制 01100001 的真值::%d\n", ch );
unsigned char ch1 = ~ch;
printf("二进制 01100001 反码的真值::%d\n", ch1 );
unsigned char and = ch & ch1;
printf("二进制 01100001 & 10011110 的结果:%d \n", and );
unsigned char or = ch | ch1;
printf("二进制 01100001 | 10011110 的结果:%d \n", or );
unsigned char or1 = ch ^ ch1;
printf("二进制 01100001 ^ 10011110 的结果:%d \n", or1 );
unsigned char left = ch << 1 ;
printf("01100001 << 1 的结果为:%d\n",left);
unsigned char right = ch >> 1 ;
printf("01100001 >> 1 的结果为:%d\n",right);
/*
1.按位取反:~
a为1byte也就是8bit存储数据,a(无符号)对应的二进制数为01100001,真值为97
01100001 对应的反码为 10011110,真值为 158
2.按位与: 01100001 & 10011110
对应为都为1时,结果才为1
01100001
10011110
-00000000 真值为0
3.按位或: 01100001 | 10011110
对应有一个1时,结果就为1
01100001
10011110
-11111111 真值为 255
4.按位异或: 01100001 ^ 10011110
对应有当且仅当只有一个为1,结果才为1
01100001
10011110
-11111111 真值为 255
5.左移:<< int
对象的每一位向左移动指定位数,移除左侧末端的值会丢失。
01100001 << 1
011000010 真值为 194
6.右移:>> int
对象的每一位向右移动指定位数,移除右侧末端的值会丢失。
01100001 >> 1
001100001 真值为 48
*/
return 0;
}