每种同类型的运算符都有内部的运算符优先级,不同类型的运算符之间也有相应的优先级顺序。
_运算符间的优先级如下:数值运算符、字符串运算符、关系运算符、逻辑运算符。可以用括号改变优先级顺序,使得括号内的运算优先于括号外的运算。对于多重括号,总是由内到外强制表达式的某些部分优先运行。括号内的运算总是最优先计算。
一、位运算符
1.按位与运算符: &
&的运算规则: 操作数上下同为 1 则为 1, 否则为0。
-----------------:1&1=1, 0&0=0, 0&1=0, 1&0=0
static void Main(string[] args)
{
int a = 6, b=5;
//将a转换为二进制数为0110
//将b转换为二进制数为0101
int c = a + b;
//将4转换为二进制数为0100
Console.Write(c);
Console.ReadKey();
}
最终结果为:4 //… 4转换为二进制数为0100
2.按位异或运算符: ^
^的运算规则 : 操作数上下相异则为 1,否则为 0。
-----------------:1 ^1=0, 0 ^0=0, 0 ^1=1, 1 ^0=1
static void Main(string[] args)
{
int a = 6, b=5;
//将a转换为二进制数为0110
//将b转换为二进制数为0101
int c = a + b;
//将3转换为二进制数为0011
Console.Write(c);
Console.ReadKey();
}
最终结果为:3 //… 3转换为二进制数为0011
3.按位或运算符: |
| 的运算规则:操作数的上下只要有 1 则为 1,否则为 0。
-----------------:1 | 1=1, 0 | 0=0, 0 | 1=1, 1 | 0=1
static void Main(string[] args)
{
int a = 6, b=5;
//将a转换为二进制数为0110
//将b转换为二进制数为0101
int c = a + b;
//将7转换为二进制数为0111
Console.Write(c);
Console.ReadKey();
}
最终结果为:7 //… 7转换为二进制数为0111
4.按位取反运算符:~
~的运算规则:遇 1 变 0,遇 0 变 1。
-----------------:一元运算符,具有“翻转 ”位效果,包括符号位。
static void Main(string[] args)
{
int a = 6;
int c = ~a;
//将a转换为二进制数为0110
Console.Write(c);
//将c转换为二进制数为1111
Console.ReadKey();
}
}
最终结果为:-7 //… -7转换为二进制数为1111
5.二进制右移运算符:>>
>> 右移规则:a >> x ----------------- x可为表达式
-----------------:操作数右移指定的位数 x。
static void Main(string[] args)
{
int a = 2;
//将a转换为二进制数为0010
// 移动后空缺补**0** 超出舍弃
Console.Write(a << 2);
//输出a为:8 转换为二进制数为1000
Console.ReadKey();
}
6.二进制左移运算符:<<
>> 右移规则:a << x
-----------------:操作数左移指定的位数 x。
static void Main(string[] args)
{
int a = 8;
//将a转换为二进制数为1000
//移动后空缺补**0** 超出舍弃
Console.Write(a >> 2);
//输出a为:2 转换为二进制数为0010
Console.ReadKey();
}
二、逻辑运算符
1.逻辑运算符与: &&
&& 逻辑与运算符:两操作数都非 0为真,其余其余为假。
static void Main(string[] args)
{
bool a = true;//设置两个真值
bool b = true;
if (a && b)
{
Console.Write("true");
Console.ReadKey();
}
else
{
Console.Write("false");
Console.ReadKey();
}
// 结果为: true
2.逻辑运算符或: ||
|| 逻辑或运算符:两操作数任意一个非 0都为真,都假为假。
static void Main(string[] args)
{
bool a = true;
bool b = false;//改变 b 为假
if (a && b)
{
Console.Write("true");
Console.ReadKey();
}
else
{
Console.Write("false");
Console.ReadKey();
}
// 结果为: true
3.逻辑运算符非: !
!逻辑非运算符:改变操作数值,使 0变为 1。
static void Main(string[] args)
{
//bool a = true;
bool b = false; //把a注释掉
if (!b)
{
Console.Write("true");
Console.ReadKey();
}
else
{
Console.Write("false");
Console.ReadKey();
}
// 结果为: true
。