如果位从左到右开始计数,如何在 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
我想将某个位置的位更改为 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