------- IOS培训、<a href="http://www.itheima.com" target="blank”>Mac、期待与您交流! —————
1.按位与 &
1001
0101
-----
0001
2. 按位或 |
1001
0101
-----
1101
3.按位异或 ^ 不相同为1,相同为0
1.相同数值进行异或,结果肯定是0,比如9^9
2.交换 9^5^6 == 9^6^5
3.任何数值跟0进行异或,结果还是原来的数值,9^0 == 9
4.a^b^a == a^a^b == 0^b == b
1001
0101
-----
1100
4.按位取反 ~
~0000 0000 0000 0000 0000 0000 0000 1001
1111 1111 1111 1111 1111 1111 1111 0110
5.左移 <<
0000 0000 0000 0000 0000 0000 0000 0000
00 0000 0000 0000 0000 0000 0000 100100
9<<1 -> 9 * 2的1次方 == 18
9<<2 -> 9 * 2的2次方 ==36
9<<n -> 9 * 2的n次方
6.右移 >>
0000 0000 0000 0000 0000 0000 0000 0000
000000 0000 0000 0000 0000 0000 0000 10
111111 1111 1111 1111 1111 1111 1111 10
8>>1 -> 8/2 == 4
8>>2 -> 8/2的2次方 == 2
8>>n -> 8/2的n次方
写一个函数,用来输出整数在内存中的二进制形式
void printBinary(int number)
{
// 记录现在挪到第几位
// (sizeof(number)*8) - 1 == 31
int temp = ( sizeof(number)<<3 ) - 1;
while ( temp >= 0 )
{
// 先挪位,再&1,取出对应位的值
int value = (number>>temp) & 1;
printf("%d", value);
//
temp--;
// 每输出4位,就输出一个空格
if ( (temp + 1) % 4 == 0 )
{
printf(" ");
}
}
printf("\n");
}