将一些位左移到现有数字中
Left shift some bits into a existing number
我有以下现有整数:
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;
根据你的文字描述,你应该使用
var myResult = (numberToLeftShift << positionsToShift) | existingNumber;
根据您的解释,您希望 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;
我有以下现有整数:
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;
根据你的文字描述,你应该使用
var myResult = (numberToLeftShift << positionsToShift) | existingNumber;
根据您的解释,您希望 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;