C语言基础之位运算
来源:互联网 发布:亨通大数据产业园 编辑:程序博客网 时间:2024/06/05 01:09
取反 ~
~(1)2=(0)2
~(110)2=(001)2
取反可以用来做文件加密操作
解密只需要将文件二进制取反就可以了
与 &
1&0=0 0&0=0
与运算可以用来做清零操作
将n的后多少位清零
n=n>>5<<5;
将n的后
判断一个整数转化为二进制有多少个1
int n=0,a=100;for(;a;a=a&(a-1)) n++;
这段代码可以判断100转化为2进制有多少个1
可以自行推演运算过程
或 |
可以用来将多少位置为1
如 a|=(1<<n)-1;
将后n-1位置为1
异或 ^
1^1=0 0^0=0 1^0=1 0^1=1
可以用来加密
对某个数进行异或加密
再次异或解密
如
1110101010011
0110101000110 n
------------------------
1000000010101
0110101000110 n
----------------------
1110101010011
和1异或发生反转
和0异或不改变
可以实现两个数的交换
如
a=a^b 改变a不改变b
b=a^b 将b置为原来的a
a=a^b 将a置为原来的b
这种交换方式一般用在面试和嵌入式的节约内存
在进行特殊的数据操作,如果与操作的位数有关,可以通过取反运算来做操作
对short末尾清零
ch = ch & ~1;
ch = ch &~((1<<5)-1)
可以用来对结构体的快速查找,因为内存是以4的倍数存储数据结构的,所以用异或 3,7来进行数据查找
阅读全文
0 0
- C语言基础之位运算
- C语言基础之编译预处理及位运算
- C语言之位运算
- C语言之位运算
- C语言之位运算
- C语言之位运算
- c语言之位运算
- C语言位运算详解(基础)
- c语言基础-位运算11
- C语言基础与位运算
- C语言基础一(位运算)
- c语言基础,程序结构,位运算
- C语言基础之运算
- C语言修行之位运算
- c语言特色之位运算
- C语言位运算之异或 ^
- c语言之坑--位运算
- c语言之位运算详解
- P3793礼物和糖果
- GitBook Editor不能pull新Book时的处理
- 知识点记录之Integer
- Converting FC layers to CONV layers
- LeetCode--word ladder(python)
- C语言基础之位运算
- python操作excel
- Django连接数据库,解决Django migrate No changes detected 不能创建表的问题
- imageloard的网络加载图片的详解
- SynchronousQueue的使用
- 83. Remove Duplicates from Sorted List
- ConcurrentHashMap源码剖析(1.8版本)
- 自我介绍
- MyBatis中如何使用PageHelper插件实现 分页