位运算小随笔

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

按位或

|  :

任何数 | 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

相关文章
|
6月前
|
NoSQL 容器 消息中间件
实战技巧位运算
实战技巧位运算
|
6月前
|
算法 C语言 数据安全/隐私保护
【C 言专栏】C 语言中的位运算技巧
【5月更文挑战第2天】探索C语言中位运算的威力:高效处理标志位、数据压缩、加密及特定算法实现。了解位与(&)、或(|)、异或(^)、取反(~)和移位操作。通过示例代码学习判断奇偶、提取、设置和清除位。注意边界条件和可读性,利用位运算提升性能,结合位图和算法实现更多功能。掌握这些技巧,优化你的C语言编程。
183 53
【C 言专栏】C 语言中的位运算技巧
|
6月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
98 0
|
6月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
121 0
|
6月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
54 0
|
6月前
|
算法
刷题专栏(三):二进制求和
刷题专栏(三):二进制求和
69 0
|
算法 Java 编译器
第 14 天_位运算【算法入门】
第 14 天_位运算【算法入门】
94 0
|
存储 C语言 C++
【C++知识点】位运算
【C++知识点】位运算
144 0
|
存储 算法 JavaScript
📖位运算在力扣算法问题的妙用
📖位运算在力扣算法问题的妙用
111 1
📖位运算在力扣算法问题的妙用
|
机器学习/深度学习 算法
算法刷题第十三天:位运算--1
时间复杂度:O(logn)。循环次数等于 n 的二进制位中 1 的个数,最坏情况下 n 的二进制位全部为 1。我们需要循环 logn 次。
83 0
算法刷题第十三天:位运算--1