简介
位运算符 主要是用于数值类型计算
运算方式: 将数值转换为二进制 在进行位运算
返回的是一个二进制转十进制的数值
如果二进制数 不够位置 则在前面补零
位与 &
规则: 连接两个数值进行位运算 将数值转换为二进制进行计算
对位运算 有零则零
int a = 1;
int b = 5;
int result = a & b;
Console.WriteLine(result); // 1
int c = 2;
result = b & c;
Console.WriteLine(result); // 0
// 17 10001 18 10010
result = 8 & 16;
Console.WriteLine(result);
位或 |
规则 : 连接两个数值进行运算 将数值转换为二进制
对位运算 有1则1
a = 21;
b = 10;
result = a | b;
Console.WriteLine(result); // 31a = 20;
b = 15;
result = a | b;
Console.WriteLine(result); // 31
位或 ^
规则 : 连接两个数值进行运算 将数值转换为二进制
对位运算 相同为0 不同为1
a = 21;
b = 25;
result = a ^ b;
Console.WriteLine(result);a = 3;
b = 25;
result = a ^ b;
Console.WriteLine(result);
位取反 ~
规则: 将一个数转换为二进制进行运算
对位运算 0变1 1变0
// 0000 0000 0000 0000 0000 0000 0000 0101
// -1111 1111 1111 1111 1111 1111 1111 1010
// 进行反码补码
a = 5;
result = ~a;
Console.WriteLine(result); // -6
<< 左移 和 右移 >>
规则 让一个数的二进制数 进行左移和右移
左移几位 就在右侧加几个零右移 右移几位 右侧就去掉几位数
result = a << 3; // 101 => 101000
Console.WriteLine(result); // 40
// 右移 右移几位 右侧就去掉几位数
result = 12 >> 2; // 1100
Console.WriteLine(result);// 3