c# - 如何更改字节变量中的每一位

标签 c# bit-manipulation bitwise-operators

<分区>

我有一个字节数

// in decimal
byte number = 250
// result who I want is number = 5

// in binary 
byte number = 0b11111010
// result who I want is number = 0b00000101

我怎样才能反转这个数字中的每一位?我尝试使用左移、右移操作、OR 和 AND,但没有按照我的需要进行操作。

最佳答案

使用按位运算符~

byte b = 0b11111111;
byte flipped = ~b; // 0b00000000

编辑:来自 MSDN 的解释

The ~ operator looks at the binary representation of the values of the expression and does a bitwise negation operation on it. Any digit that is a 1 in the expression becomes a 0 in the result. Any digit that is a 0 in the expression becomes a 1 in the result. When the ~ operator acts on an operand of an integral data type, it performs no coercion and returns a value of the same data type as the operand. When the operand is of a non-integral data type, the value is coerced to type int before the operation is performed, and the return value of the operator is of type int.

关于c# - 如何更改字节变量中的每一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35130698/

相关文章:

有人可以解释一下这个 bitCount 代码是如何工作的吗?

python - 如何在python中获得逻辑正确的二进制移位

c# - 请推荐一个Mono(即C#)的音频阅读库

algorithm - 位交换 O(logN)?

algorithm - 位移位的位成本

javascript - 计算器和 Javascript 之间的按位计算不匹配

php - 按位运算符不会从 JavaScript 转换为 PHP

c# - 协变泛型参数

c# - 如何在C#中从派生类实例调用基方法?

c# - 在 C# Winforms 上验证文本框的输入