---位运算
1.按位与 &
9 & 5
1001
0101
----
0001
a&1 == 1 奇数
a&1 == 0 偶数
2.按位或 |
9 | 5
1001
0101
----
1101
3.按位异或 ^ 对应二进制位一样就为0,不一样就为1
1001
0101
----
1100
1>相同数值进行异或,结果肯定是0,比如9^9
2>交换 9^5^6 == 9^6^5
3>任何数值跟0进行异或,结果还是原来的数值,9^0 == 9
4>a^b^a == b
用第四条交换两个变量的值
a = a ^ b;
b = a ^ b;
a = a ^ b;
按位取反 ~ 对应单个数 0变1,1变0
~0000 0000 0000 0000 0000 0000 0000 1001
1111 1111 1111 1111 1111 1111 1111 0110
4.左移和右移
左移 << 9<<n 把整数的各二进位全部左移n位,高位丢弃,低位补0,等于原数乘以2的n次方,最高位舍弃,正负性改变
右移 >> 9>>n 把整数的各二进位除了符号位全部右移n位,高位用符号位补齐,低位丢弃等于原数除以2的n
应用:
/*
写一个函数,用来输出整数在内存中的二进制形式
*/
#include <stdio.h>
void printBinary(int number);
int main()
{
/*
0000 0000 0000 0000 0000 000