将循环值移至前四位

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

我有一个不特定的编程语言的问题。我可以使用移位和位智运算符。

我的值 例如,是0xF5 (1111.0101). 现在我想把前四位从0到15(每个位的组合)这样数起来。

  • 0001.0101
  • 0010.0101
  • 0011.0101
  • 0100.0101

这样做对吗?

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)
}
bit-manipulation bit-shift
1个回答
2
投票

第二种操作是正确的

   MyValue = MyValue | (LoopVariable  << 4)

它将高位设置为 LoopVariable.

第一个不是。

   MyValue = MyValue | (0 << 4)

它不清除任何位,它是无操作。要清除位,就用位的 而不是 ,并采用位元化的倒置掩码。.

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