如果位从​​左到右开始计数,如何在 C# 中将位更改为二进制整数?

How to change bits into binary integer if the bits start to count from left to right in C#?

我想将某个位置的位更改为 16 位整数,但位的位置是从左到右给出的。怎么做 ?

这是一个例子:我必须将给定位置的位更改为“1”。

int a = 27991; // binary its "01101101 01010111"
int position1 = 12; // this position means i have to change "01101101 0101**0**111"
int position2 = 1; // this position means i have to change "0**1**101101 01010111"

我希望你能理解我的意思,有人可以提供一点帮助。

您可以制作一个具有最左边位的掩码,然后将其右移 positionX 次以制作正确的掩码:

int topBit = 1<<16; // 10000000 00000000
int mask = topBit >> position1;

现在您可以使用mask设置或清除目标位,如下所示:

int b = a | mask;  // Set 12-th bit to 1
int c = a & ~mask; // Set 12-th bit to 0