坚持打卡学习第四天——位运算

2021-12-19  本文已影响0人  去追星星

前言

第三天用到的bit_or(),bit_and(),bit_count()三个函数,发现自己对位运算不清楚

正文

计算机对二进制数进行四则运算称位运算

1.位运算符号概览
符号 描述 运算规格
& 两个位都为1时为1
| 两个位都为0时为0
^ 异或 相同为0,异为1
~ 取反 0取1,1取0
<< 左移 各二进制全部左移,高位丢弃,低位补0
>> 右移 各二进制全部右移,对于无符号数,高位补0...
2.按位与运算(&)

运算规则:
eg:0&0=0 0&1=0 1&0=0 1&1=1
eg:3&5即0000 0011&0000 0101=0000 0001,因此3&5=1
使用场景
(1)清零:与0相与
(2)取一个数的指定位:指定位与都是1的进行与运算
(3)判断奇偶:末位为0为偶数,if(a&1 == 0)

3.按位或运算(|)

运算规则:
eg:0|1 = 1 1|0 = 1 1|1 = 1 0|0 = 0
eg:3|5即0000 0011|0000 0101 = 0000 0111即3|5=7

4.异或运算(^)

运算规则:(同为0异为1)
eg:0^0=0 0^1=1 1^0=1 1^1=0
eg:3^5即0000 0011^0000 0101=0000 0110即3^5 = 6
性质:
(1)与0异或值不变
(2)x^x=0 ,a ^ b ^ b = a

5.取反运算(~)

运算规则:
eg:~1=0 ~0=1

5.左移运算(<<)

运算规则:(每左移一位视为乘以2)
2左移两位,即a=0000 0010,a<<2 = 0000 1000即为8

6.右移运算(>>)

运算规则:(正数左补0,负数左补1,右边丢弃,每右移一位视为除以2)
16右移两位,即a=0001 0000,a>>2 = 0000 0100即为4

码制

1.二进制数正负有三种表示法——原码;反码:补码
2.二进制数:第一位为符号位,0正1负;后面是数值位
3.正数三种表示方式相等:原码=反码=补码
4.负数三种表示不同:
(1)原码:符号位"1"+二进制数绝对值数值
eg:-5 = 1 000 0101
(2)反码:符号位"1"+数值位按位取反
eg:-5 = 1 111 1010
(3)补码:反码+末位"1"
eg:-5 = 1 111 1011

上一篇 下一篇

猜你喜欢

热点阅读