将一些位左移到现有数字中



我有以下现有的整数:

128 = 1000.0000

我想将以下整数向左移动 2 个位置......

15 = 0000.1111

。将现有数字转换为比特索引 6:

MyResult应为 = 1011.1100 = 188

我已经尝试过这个,但结果是错误的。另外,如果我将positionsToShift更改为 2:

int existingNumber = 128;
int numberToLeftShift = 15;
int positionsToShift = 6;
int myResult = (existingNumber << positionsToShift) | numberToLeftShift;

根据你的解释,你想numberToLeftShift转移

  15 << 2

然后,ANF 与现有整数组合:

  (15 << 2) | 128

实现

  int existingNumber = 128;
  int numberToLeftShift = 15;
  int positionsToShift = 2;   // we want shift by 2 to the left; not by 6
  // numberToLeftShift and existingNumber are swapped
  int myResult = (numberToLeftShift << positionsToShift) | existingNumber;

根据您的文本描述,您应该使用

var myResult = (numberToLeftShift << positionsToShift) | existingNumber;

最新更新