c语言学习之位运算知识总结和实例分析

先给大家讲个笑话吧,说世界上有10种人,一种知道二进制,而另一种不知道二进制。
位运算的基础就是二进制。

二进制的位运算包括五种运算:

与,或,异或,左移,右移
与(&) 0&0 = 0,0&1 = 0;1&0 = 0;1&1 = 1;
或(|) 0|0 = 0, 0|1 = 1; 1|0 = 1; 1|1 = 1;
异或(^)0^0 =0; 0^1 = 1; 1^0 = 1; 1^1 = 0;
左移(<<) 00001001 << 2 =00100100
右移(>>) 10001010 >> 3 = 00010001
前面已经提到过,右移分为算术右移和逻辑右移,主要在于无符号数和有符号数的区别。
逻辑右移:右移后,左端补零
00001010 >> 2 = 00000010
算术右移:右移后,左端补最高位数
有符号数10001010 >>3 = 11110001
对于无符号数按照逻辑右移,有符号数一般为算术右移

1.位运算的特点

1,按位与(&)
清零特定位,10001010 & 01111111 = 00001010 (首位清零)
取指定位, 10001010 & 10000000 = 10000000 (取首位)
2,按位或(|)
将某一位置置一,10001010 | 00000001 = 10001011 (末尾置一)
3,位异或(^)
使特定位取反 ,10001010 ^ 10001010 = 00001010 (首位取反)
不引入第三变量,交换两个变量的值
a = a^b ;b = a^b;a = a^b

4,补码运算
-x = ~x +1

2.位运算的应用

应用举例:
1,判断int型变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值