- 课程名称:Linux C语言结构体
- 课程链接:https://www.imooc.com/learn/409
- 章节名称:
- 第6章:位运算的秘密
- 6-2 按位或
- 6-3 按位异或
- 第6章:位运算的秘密
- 讲师姓名:
雷过就跑
- 时间:2023-02-14 17:30
课程内容
-
按位或:将参与的两个数进行逻辑或运算
- 作用:设定数据指定位上的值比如:一个
int
类型的数值,用二进制表示为0010,0101-1101,1001-0010,0110-1101,0101
- 如果想将左数第3个字节都换成1,可以使用
数值 | 0xFF00
- 作用:设定数据指定位上的值比如:一个
-
按位异或:异或是运算位值都不相同,结果为1,否则为0,也可以说对位二进制数互斥,结果为真,否则为假
-
作用:
-
定位翻转功能:把指定位值0与1互转,例如想把左数最后一个字节按位翻转,可以使用
数值 ^ 0xFF
-
数值交换功能
-
int a = 9, b = 5; a = a ^ b; b = a ^ b; a = a ^ b;
-
上述代码能够成立的原因在于
a ^ a = 0; a ^ b = b ^ a
自己和自己异或,结果为0;异或运算满足交换率
-
-
-
-
按位取反,是唯一单目运算符,对每一位取反
学习心得
以前一直没有搞懂为什么异或运算可以不用增加中间变量来交换两个变量的值,这回的学习搞清楚了,是因为异或运算有一些特殊性质