位运算小随笔

简介: 手撕位运算,不算细节,小记一手

按位或

|  :

任何数 | 0为他本身,任何数 | 1为 0

如置二进制某位切1操作:

#define SET(a,num) (x) |=(1<<(n-1))

按位与

& :

任何数 & 1为他本身,任何数 & 0为 0

如置二进制某位切0操作:

#define SET(a,num) (x) &=(~(1<<(n-1)))

按位异或

^ :

相同为0,相异为1,任何数^0为他本身

<u>注意,位运算都遵循结合律和交换律</u>!

隐式整型提升

比如一个 char 类型变量 a 大小为 1,但是对 a 进行位运算~,<<,>>等,其 大小都会变成 4 ,原因就是位运算是由 CPU 来完成,而数据在 CPU 中只能以整型的形式存在,这里发生了隐式整型提升。

左右移

458e9ec48257907c575407eb7219cad2c585f8.png

相关文章
|
8月前
|
NoSQL 容器 消息中间件
实战技巧位运算
实战技巧位运算
|
10天前
|
算法
【算法】位运算合集
/鸽巢原理优化//位图原理//bitMap&0001000只有非0或者0两个结果//说明当前bitMap位是0,那就添加进去}else{//1:把字符串转化为字符数组// //2:把字符扔到hash表中// //获取hash表中x的value值// }else{// }// }
|
8月前
|
存储 C语言
【C语言初阶】什么操作符你还没搞懂?试试这篇文章让你彻底理解各种操作符!
【C语言初阶】什么操作符你还没搞懂?试试这篇文章让你彻底理解各种操作符!
69 1
|
存储 C语言 C++
【C++知识点】位运算
【C++知识点】位运算
150 0
|
存储 C语言
初阶C语言 第三章-------《数组》(一维数组,二维数组,数组越界.....) 知识点+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
初阶C语言 第三章-------《数组》(一维数组,二维数组,数组越界.....) 知识点+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
|
Linux 索引 Python
好玩的位运算
好玩的位运算
140 0
好玩的位运算
|
存储 编译器 Linux
【C初阶】第六篇——操作符详解
【C初阶】第六篇——操作符详解
【C初阶】第六篇——操作符详解
|
机器学习/深度学习
【C位运算&基础+面试题】位运算中阶详解及面试题(下)
【C位运算&基础+面试题】位运算中阶详解及面试题
87 0
【C位运算&基础+面试题】位运算中阶详解及面试题(下)
|
编译器
【C位运算&基础+面试题】位运算中阶详解及面试题(上)
【C位运算&基础+面试题】位运算中阶详解及面试题
89 0
【C位运算&基础+面试题】位运算中阶详解及面试题(上)
|
存储 前端开发 算法
LeetCode回文数使用JavaScript解题,一种不太正经的解法|前端学算法
LeetCode回文数使用JavaScript解题,一种不太正经的解法|前端学算法
81 0
LeetCode回文数使用JavaScript解题,一种不太正经的解法|前端学算法