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

Evg*_*kov 1 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
Run Code Online (Sandbox Code Playgroud)

如何反转此数字中的每一位?我尝试左移,右移操作,使用OR,AND但不是这样做我需要的.

sar*_*ara 7

使用按位运算not~

byte b = 0b11111111;
byte flipped = ~b; // 0b00000000
Run Code Online (Sandbox Code Playgroud)

编辑:从MSDN解释

〜运算符查看表达式值的二进制表示,并对其执行按位求反运算.表达式中任何1的数字在结果中变为0.表达式中任何0的数字在结果中变为1.当〜运算符作用于整数数据类型的操作数时,它不执行强制操作并返回与操作数相同的数据类型的值.当操作数是非整数数据类型时,在执行操作之前将值强制转换为int类型,并且操作符的返回值为int类型.