C++知识点总结(31):位运算、进制转换

一、前言

位运算和进制转换都是非常热门的题目。在 CCF CSP-J/SGESP 初赛的时候有选择题,其中大规模的就是位运算和进制转换。根据近 10 10 10 年的调查情况,有接近 10 % 10\% 10% 的题目考察位运算,有接近 30 % 30\% 30% 的题目考察进制转换。

二、位运算

1. 按位与 &

例题: ( 1101101 ) 2 & ( 101001 ) 2 = ( 0101001 ) 2 (1101101)_2 \& (101001)_2=(0101001)_2 (1101101)2&(101001)2=(0101001)2

数字1 1 1 0 1 1 0 1
数字2 0 1 0 1 0 0 1
结果 0 1 0 1 0 0 1

技巧:全 1 1 1 1 1 1,一 0 0 0 0 0 0

2. 按位或 |

例题: ( 1101101 ) 2 ∣ ( 101001 ) 2 = ( 1101101 ) 2 (1101101)_2 | (101001)_2=(1101101)_2 (1101101)2(101001)2=(1101101)2

数字1 1 1 0 1 1 0 1
数字2 0 1 0 1 0 0 1
结果 1 1 0 1 1 0 1

技巧:全 0 0 0 0 0 0,一 1 1 1 1 1 1

3. 按位异或 ^

例题: ( 1101101 ) 2 (1101101)_2 (1101101)2 ^ ( 101001 ) 2 = ( 1000100 ) 2 (101001)_2=(1000100)_2 (101001)2=(1000100)2

数字1 1 1 0 1 1 0 1
数字2 0 1 0 1 0 0 1
结果 1 0 0 0 1 0 0

技巧:一 1 1 1 1 1 1,否则为 0 0 0

4. 按位取反 ~

例题:   ( 1101101 ) 2 = ( 0010010 ) 2 ~ (1101101)_2=(0010010)_2  (1101101)2=(0010010)2

数字 1 1 0 1 1 0 1
结果 0 0 1 0 0 1 0

技巧: 1 1 1 0 0 0,否则为 1 1 1

5. 按位左移 <<

例题: ( 1101101 ) 2 < < ( 2 ) (1101101)_2 << (2) (1101101)2<<(2) 10 10 10 = ( 110110100 ) 2 =(110110100)_2 =(110110100)2
技巧:左移 n n n 位就添 n n n 0 0 0

6. 按位右移 >>

例题: ( 1101101 ) 2 > > ( 2 ) (1101101)_2 >> (2) (1101101)2>>(2) 10 10 10 $
技巧:右移 n n n 位就取前 n n n

三、进制转换

1. 二进制数计算

1 1 1 ( 101 ) 2 + ( 11 ) 2 = ( 1000 ) 2 (101)_2+(11)_2=(1000)_2 (101)2+(11)2=(1000)2
【解析】
1 + 1 = 2 1+1=2 1+1=2,满 2 2 2 1 1 1,进 1 1 1 0 0 0
0 + 1 + 1 = 2 0+1+1=2 0+1+1=2,满 2 2 2 1 1 1,进 1 1 1 0 0 0
1 + 1 = 2 1+1=2 1+1=2,满 2 2 2 1 1 1,进 1 1 1 0 0 0


2 2 2 ( 101 ) 2 − ( 11 ) 2 = ( 10 ) 2 (101)_2-(11)_2=(10)_2 (101)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值