左移一些位到现有数字

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

我有以下现有的整数:

128 = 1000.0000

我想把下面的整数转移2个左边的位置......

15 = 0000.1111

...将现有数字转换为bitindex 6:

MyResult应为= 1011.1100 = 188

我试过这个,但结果是错的。如果我将positionsToShift更改为2:

int existingNumber = 128;
int numberToLeftShift = 15;
int positionsToShift = 6;

int myResult = (existingNumber << positionsToShift) | numberToLeftShift;
c# .net bit bit-shift
2个回答
4
投票

根据你的解释,你希望numberToLeftShift转变

  15 << 2

然后与现有的整数组合:

  (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;

1
投票

根据你的文字描述,你应该使用

var myResult = (numberToLeftShift << positionsToShift) | existingNumber;
© www.soinside.com 2019 - 2024. All rights reserved.