1.运算符
引用了 c#位操作符号
<p style="margin:5px auto; line-height:21px; font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; font-size:14px; background-color:rgb(238,238,238)">位操作符是对数据按二进制位进行运算的操作符。c#位操作符包括:</p><ul style="margin-left:45px; font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; font-size:14px; background-color:rgb(238,238,238)"><li style="list-style:inherit">按位与 &</li><li style="list-style:inherit">按位或 |</li><li style="list-style:inherit">按位取反 ~</li><li style="list-style:inherit">左移 <<</li><li style="list-style:inherit">右移 >></li></ul><p style="margin:5px auto; line-height:21px; font-family:Verdana,Geneva,Arial,Helvetica,sans-serif; font-size:14px; background-color:rgb(238,238,238)">举例说明</p>
public static void Main()
{
int a=6&3;
Console.WriteLine("a={0}",a);
//6的二进制是00000110,3的二进制是00000011,按位与后等于00000010, 即2。
int b=6|3;
Console.WriteLine("b={0}",b);
//6的二进制是00000110,3的二进制是00000011,按位或后等于00000111,即7
int c=~6;
Console.WriteLine("c={0}",c);
//6的二进制是00000110,按位取反后是11111001即-7,最高位表示符号位,必须要相加=1,也就是1000 0111=-7
int d=6^3;
Console.WriteLine("d={0}",d);
//6的二进制是00000110,3的二进制是00000011,按位异或后等于00000101,即5
int e=6<<3;
Console.WriteLine("e={0}",e);
//6的二进制是00000110,左移三位后等于00110000,即48 ,符号位不变
int f=6>>2;
Console.WriteLine("f={0}",f);
//6的二进制是00000110,右移二位等于00000001,即1 ,符号位不变
}
注意:
1)负数的右移,需要先将负数转换为补码,再右移,再转换为原码
比如:-6>>2,[-6]原码=1000 0110,转为补码[1000 0110]补=1111 1010,右移两位,符号位不变,高位补1,得到:1111 1110,再转为原码:1000 0010=-2
2.进制数转换
//十进制转二进制
Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));
//十进制转八进制
Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));
//十进制转十六进制
Console.WriteLine("十进制166的十六进制表示: "+Convert.ToString(166, 16));
//二进制转十进制
Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));
//八进制转十进制
Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));
//十六进制转十进制
Console.WriteLine("十六进制 CC的十进制表示: "+Convert.ToInt32("CC", 16));