class Program
{
static void Main(string[] args)
{
int val1 = 2;
int val2 = 4;
Console.WriteLine(ConvertBits(val1).ToString());
Console.WriteLine(ConvertBits(val2).ToString());
//二进制or操作
Console.WriteLine(ConvertBits(val1 | val2).ToString());
//二进制and操作
Console.WriteLine(ConvertBits(val1 & val2).ToString());
//二进制Exclusive or操作两个中只有一个为才是1
Console.WriteLine(ConvertBits(val1 ^ val2).ToString());
//移动的位数
int num = 1;
//二进制<<左移
val2 <<= num;
Console.WriteLine(ConvertBits(val2).ToString());
//二进制>>右移
val2 >>= num;
Console.WriteLine(ConvertBits(val2).ToString());
Console.ReadKey();
}
//将整数转成32位的二进制数
static StringBuilder ConvertBits(int val)
{
//10000000 00000000 00000000 00000000
int bitMask = 1 << 31;
StringBuilder bitBuffer = new StringBuilder();
for (int i = 1; i <= 32; i++)
{
//二进制与操作
//由于bitBuffer是从后加入的所以当二进制遇到bitMask第一位的1才是1;
//&和&&;|和||的区别C#
if ((val & bitMask) == 0)
bitBuffer.Append("0");
else
bitBuffer.Append("1");
//将数字转成二进制比且位前移一位
//简单的例子举几位表示下:3进制0011
//而上述bitMask:1000
//与操作:1.比较1000和0011所以是0
//2.左移一位变成0110;1000与0110还是0
//3.左移一位变成1100;1000与1100为1;
//4.左移一位变成1000;1000与1000为1;
val <<= 1;
if ((i % 8) == 0)
bitBuffer.Append(" ");
}
return bitBuffer;
}
}
{
static void Main(string[] args)
{
int val1 = 2;
int val2 = 4;
Console.WriteLine(ConvertBits(val1).ToString());
Console.WriteLine(ConvertBits(val2).ToString());
//二进制or操作
Console.WriteLine(ConvertBits(val1 | val2).ToString());
//二进制and操作
Console.WriteLine(ConvertBits(val1 & val2).ToString());
//二进制Exclusive or操作两个中只有一个为才是1
Console.WriteLine(ConvertBits(val1 ^ val2).ToString());
//移动的位数
int num = 1;
//二进制<<左移
val2 <<= num;
Console.WriteLine(ConvertBits(val2).ToString());
//二进制>>右移
val2 >>= num;
Console.WriteLine(ConvertBits(val2).ToString());
Console.ReadKey();
}
//将整数转成32位的二进制数
static StringBuilder ConvertBits(int val)
{
//10000000 00000000 00000000 00000000
int bitMask = 1 << 31;
StringBuilder bitBuffer = new StringBuilder();
for (int i = 1; i <= 32; i++)
{
//二进制与操作
//由于bitBuffer是从后加入的所以当二进制遇到bitMask第一位的1才是1;
//&和&&;|和||的区别C#
if ((val & bitMask) == 0)
bitBuffer.Append("0");
else
bitBuffer.Append("1");
//将数字转成二进制比且位前移一位
//简单的例子举几位表示下:3进制0011
//而上述bitMask:1000
//与操作:1.比较1000和0011所以是0
//2.左移一位变成0110;1000与0110还是0
//3.左移一位变成1100;1000与1100为1;
//4.左移一位变成1000;1000与1000为1;
val <<= 1;
if ((i % 8) == 0)
bitBuffer.Append(" ");
}
return bitBuffer;
}
}