我有以下现有的整数:
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;