位运算功能大全

去掉最后一位
示例: 10110110110 ( 101101 ⇒ 10110 )
位运算: x>>1 x >> 1

在最后加一个0
示例: (1011011011010) ( 101101 ⇒ 1011010 )
位运算: x<<1 x << 1

在最后加一个1
示例: (1011011011011) ( 101101 ⇒ 1011011 )
位运算: (x<<1)+1 ( x << 1 ) + 1

把最后一位变成1
示例: (101100101101) ( 101100 ⇒ 101101 )
位运算: x|1 x | 1

把最后一位变成0
示例: 101101101100 101101 ⇒ 101100
位运算: (x|1)1 ( x | 1 ) − 1

最后一位取反
示例: (101101101100) ( 101101 ⇒ 101100 )
位运算: xxor1 x x o r 1

把右数第k位变成1
示例: (101001101101,k=3) ( 101001 ⇒ 101101 , k = 3 )
位运算: x|(1<<(k1)) x | ( 1 << ( k − 1 ) )

把右数第k位变成0
示例: (101101101001,k=3) ( 101101 ⇒ 101001 , k = 3 )
位运算: x and  (1<<(k1)) x   a n d     ( 1 << ( k − 1 ) )

右数第k位取反
示例: (101001101101,k=3) ( 101001 ⇒ 101101 , k = 3 )
位运算: x(xor(1<<(k1))) x ( x o r ( 1 << ( k − 1 ) ) )

取整数n在二进制表示下的第k位
位运算: (n>>k) and 1 ( n >> k )   a n d   1

取整数n在二进制表示下的后k位
位运算: n and ((1<<k)1) n   a n d   ( ( 1 << k ) − 1 )

取末k位
示例: (11011011101,k=4) ( 1101101 ⇒ 1101 , k = 4 )
位运算: x and ((1<<k)1) x   a n d   ( ( 1 << k ) − 1 )

取右数第k位
示例: (11011011,k=4) ( 1101101 ⇒ 1 , k = 4 )
位运算: x>>(k1) and 1 x >> ( k − 1 )   a n d   1

把末k位变成1
示例: (101001101111,k=4 ( 101001 ⇒ 101111 , k = 4
位运算: x|((1<<k)1) x | ( ( 1 << k ) − 1 )

末k位取反
示例: (101001100110,k=4 ( 101001 ⇒ 100110 , k = 4
位运算: x xor ((1<<k)1) x   x o r   ( ( 1 << k ) − 1 )

把右边连续的1变成0
示例: (100101111100100000) ( 100101111 ⇒ 100100000 )
位运算: x and (x+1) x   a n d   ( x + 1 )

把右起第一个0变成1
示例: (100101111100111111 ( 100101111 ⇒ 100111111
位运算: x|(x+1) x | ( x + 1 )

把右边连续的0变成1
示例: (1101100011011111) ( 11011000 ⇒ 11011111 )
位运算: x|(x1) x | ( x − 1 )

取右边连续的1
示例: (1001011111111) ( 100101111 ⇒ 1111 )
位运算: (x xor (x+1))>>1 ( x   x o r   ( x + 1 ) ) >> 1

去掉右起第一个1的左边
示例: (1001010001000) ( 100101000 ⇒ 1000 )
位运算: x and (x xor (x1)) x   a n d   ( x   x o r   ( x − 1 ) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值