我有一个不特定的编程语言的问题。我可以使用移位和位智运算符。
我的值 例如,是0xF5 (1111.0101). 现在我想把前四位从0到15(每个位的组合)这样数起来。
这样做对吗?
for-Loop (counting up to 15, loop variable is LoopVariable)
{
// Set first four bits to 0 e.g 1111.0101 to 0000.0101
MyValue = MyValue | (0 << 4)
// Set first four bits according to current loop e.g. 0000.0101 to 0001.0101
MyValue = MyValue | (LoopVariable << 4)
}
第二种操作是正确的
MyValue = MyValue | (LoopVariable << 4)
它将高位设置为 LoopVariable
.
第一个不是。
MyValue = MyValue | (0 << 4)
它不清除任何位,它是无操作。要清除位,就用位的 和 而不是 或,并采用位元化的倒置掩码。不.