1 <

问题描述 投票:0回答:1

我看到有人使用1 << i,有时使用了[[1 << n。这是什么,怎么用?

c++11 bit bitmask
1个回答
0
投票
当您想到二进制表示的值时,会将值向左移动n次。 n零位数字将添加到右侧。

因此,如果1b,则100b变为n == 2等。

[如果以小数点看,将其移位一次(n==1)等于将该值乘以2。移位两次等于乘以4的运算,依此类推。

一个优点是位移比“实”整数乘法快。

[通常在计算中,您会看到所谓的位域,其中每个位都在打开或关闭某物,否则具有某些特殊含义。

例如,在微控制器上,寄存器的每个位可能代表连接到LED的数字输出。

在那里,该符号可用于创建一个“掩码”,该掩码表示程序员想要操纵的位数(i)。

例如

[x &= ~(1<<4)清除第4位,而x |= (1<<4)将设置相同的位。

[如果i太高或操作的左侧为负值,则移位可能会在某些系统上导致不确定的行为。

© www.soinside.com 2019 - 2024. All rights reserved.