Files
Csharp/C#入门/Lesson14_位运算/Program.cs
T

64 lines
2.7 KiB
C#
Raw Normal View History

2025-09-30 16:46:01 +08:00
using System;
namespace Lesson14
{
class program
{
static void Main(string[] args)
{
//位运算主要使用数值类型计算
//将数值类型转换为二进制形式进行计算
//位运算符包括:& | ^ ~ << >>
#region 知识点一 位与 &
// 规则 连接两个数值进行位与运算 将数值转为二进制
// 对位运算 有0则0
int a = 1;//001
int b = 5;//101
int c = a & b;
// 001 & 101 = 001
Console.WriteLine(c);//001 & 101 = 001
Console.WriteLine(10 & 5);//1010 & 0101 = 0000
Console.WriteLine(3 & 19);//00011 & 10011 = 00011
Console.WriteLine(19 & 3);//10011 & 00011 = 00011
Console.WriteLine(1 & 2);//01 & 10 = 00
//有点像是取最小的数,但不实际是这样
#endregion
#region 知识点二 位或 |
// 规则 连接两个数值进行位或运算 将数值转为二进制
// 对位运算 有1则1
Console.WriteLine(2 & 3);// 00010 & 00011 = 00011
Console.WriteLine(3 & 2);// 00011 & 00010 = 00011
Console.WriteLine(12 & 3);// 00001100 & 00000011 = 00000000
#endregion
#region 知识点三 位异或 ^
// 规则 连接两个数值进行位异或运算 将数值转为二进制
// 对位运算 相同为0 不同为1
Console.WriteLine(2 ^ 3);// 00010 ^ 00011 = 00001
Console.WriteLine(3 ^ 2);// 00011 ^ 00010 = 00001
Console.WriteLine(12 ^ 3);// 00001100 ^ 00000011 = 00001111
#endregion
#region 知识点四 位非 ~
// 规则 连接一个数值进行位非运算 将数值转为二进制
// 对位运算 0变1 1变0
Console.WriteLine(~2);// ~00010 = 11101 = -3
// 但是要注意,特定变量类型前面的位会补全例如int
int test = 10;
Console.WriteLine(~test);// ~00000000000000000000000000001010 = 11111111111111111111111111110101 = -11
#endregion
#region 知识点五 左移 << 右移 >>
// 规则 左移运算符将数值的二进制位向左移动指定的位数,右移运算符将数值的二进制位向右移动指定的位数
// 左移相当于乘以2的n次方 右移相当于除以2的n次方
a = 5;// 101
c = a << 5; // 5左移5位
Console.WriteLine(c);// 10100000 = 160
//右移同理
c = a >> 2; // 5右移2位
Console.WriteLine(c);// 00000101 >> 2 = 00000001 = 1
#endregion
}
}
}