iOS开发

「C 基础」位运算

2016-05-16  本文已影响32人  _凉风_

0. 原码、补码、反码

初学者只做了解即可 见 张子秋 的博客

无论正负数,在内存中存储的都是补码
正数:反码 == 原码 == 补码
负数:反码 == ~原码
   补码 == 反码+1

1. & 按位 与「AND」

2. | 按位 或「OR」

3. ^ 按位 异或「XOR,EOR」

4. ~ 按位 取反「NOR」

5. << 左移

6. >> 右移


7. 应用 「了解即可」

数值转换:

int a = 9;
int b = 6;
//1. 借助第三方变量
int temp;
temp = a;
   a = b;
   b = temp;

//2. 不借助额外空间,数学方法
a = b - a;
b = b - a;
a = b + a;

//3. 不借助额外空间,位运算
a = a ^ b;
b = a ^ b;
a = a ^ b;

奇偶判断:

int a=15; 
// 方法1 取模判断 
// 注:这里由于 printf()是有返回值「输出的字符串长度」 
// 所以可以用 三位运算符 条件?值:值 
a%2?printf(“奇数\n”):printf(“偶数\n”);

// 方法2 与1判断 
// 由于:奇数,二进制最后一位是 1 
// 偶数,二进制最后一位是 0 
// 1 & X = X的二进制最后一位 
a&1?printf(“奇数\n”):printf(“偶数\n”);
上一篇 下一篇

猜你喜欢

热点阅读