Bit manipulation 语句(1<;<;y)在按位运算中的含义是什么
我是位运算的完全初学者(在C方面也不是很有经验),我遇到了以下表达式:Bit manipulation 语句(1<;<;y)在按位运算中的含义是什么,bit-manipulation,bitwise-operators,Bit Manipulation,Bitwise Operators,我是位运算的完全初学者(在C方面也不是很有经验),我遇到了以下表达式: x |= (1<<y) x |=(1) 是的缩写 x = x | ... 它将x |…的值分配给x 1 << y 所以 第一条语句表示将1(0b0000001)的二进制表示形式左移y位,然后将值或X位。 第二种说法的假设是正确的。 第三条语句将产生4(0b0000000100)。 在位运算语义方面,C标准定义了所有要表示的位运算,以便以2次幂的升序值从右到左读取二进制数。您不需要担心尾数或两个补
x |= (1<<y)
x |=(1)
是的缩写
x = x | ...
它将x |…
的值分配给x
1 << y
所以
第一条语句表示将1(0b0000001)的二进制表示形式左移y位,然后将值或X位。
第二种说法的假设是正确的。
第三条语句将产生4(0b0000000100)。
在位运算语义方面,C标准定义了所有要表示的位运算,以便以2次幂的升序值从右到左读取二进制数。您不需要担心尾数或两个补码等问题,编译器将为您处理。因此(0b00100)=4,(0b000010)=2,(0b00001)=1,依此类推
x |= ...
x = x | ...
1 << y
00000001 << 1 -> 00000010
x |= (1 << y)
x = 01010101
x |= (1 << 1) -> 01010111 (it set the 2nd bit to 1)