基础位运算

一.基础位运算

1.<<

左移操作符,使二进制向左边移动指定位数,同时在其右侧补0

00000000 00000000 00000000 00000001 // 1的二进制

1 << 2

00000000 00000000 00000000 00000100

左移操作符可以用来提高乘法的效率:2*n -> 1<<n,x*2*n -> x << n 

2.>>

右移与左移的操作相反,使二进制向右边移动指定位数。

右移分为逻辑右移和算数右移:算数右移在其左侧补符号位,逻辑右移在其左侧补0.

// 算数右移

11111111 11111111 11111111 11111011

11111111 11111111 11111111 11111101

// 逻辑右移

00000000 00000000 00000000 00000101 

00000000 00000000 00000000 00000010

3.~

取反操作符,使二进制的每一位变成其相反数。0变为1,1变为0.

// 取反操作

11111111 11111111 11111111 11111111

00000000 00000000 00000000 00000000

4.逻辑与&

有0则0

010

111

——

010

5.逻辑或|

有1则1

010

111

——

111

6.异或^

异或有两种解释方法:

相同为0,不同为1

010

111

——

101

 无进位相加

011

001

——

010       最末尾1+1是2,二进制表示10,无进位即只保留那个0.

二.基础位运算算法 

1.判断一个数的二进制的第x位是0还是1

首先一个正数的二进制位从右向左第一位是第0位,依次类推,位数范围为[0,31]

   &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值