0
点赞
收藏
分享

微信扫一扫

C#(二):运算符


运算符

  • ​​除法 `/`​​
  • ​​`异或 ^ ` 和 `位异或 ^ `​​
  • ​​位或 `|`​​
  • ​​位与 `&`​​
  • ​​位反 `~`​​
  • ​​`位左移 << ` 和 `位右移 >> `​​

除法 ​​/​

  • 整型之间的除法结果为商数

Console.WriteLine(10 / 3); // 3

  • 含有浮点数参与的除法结果为浮点数

Console.WriteLine(10 / 3f); // 3.333333
Console.WriteLine(10.00 / 3); // 3.33333333333333
Console.WriteLine(10.5 / 3); // 3.5

​异或 ^​​​ 和 ​​位异或 ^​

  • ​true​​​ 和​​false​​ 参与判断时
  • 如果两个结果相同,返回值为​​false​

Console.WriteLine(true ^ true); // False
Console.WriteLine(false ^ false); // False

  • 如果两个结果不同,返回值为​​true​

Console.WriteLine(false ^ true); // True
Console.WriteLine(true ^ false); // True

  • ​表达式​​​​数字​​ 参与判断

Console.WriteLine(-10 ^ 10); // -4
// 1000 1010 原 -10
// 1111 0101 反 -10
// 1111 0110 补 -10
// 0000 1010 补 +10
// ------------------
// 1111 1100 补 计算结果 => 按位异或 1^0 1^0 1^0 1^0 0^1 1^0 1^1 0^0
// 1000 0011 反 求反
// 1000 0100 原 求原
// -(2^2) = -4

Console.WriteLine(10 ^ 10); // 0
// 0000 1010 原反补 +10
// 0000 1010 原反补 +10
// --------------------
// 0000 0000 原反补 计算结果 0

Console.WriteLine(6 ^ 10); // 12
// 0000 0110 原反补 +6
// 0000 1010 原反补 +10
// --------------------
// 0000 1100 原反补 计算结果 8 + 4 = 12

位或 ​​|​

Console.WriteLine(-10 | 10); // -2
// 1000 1010 原 -10
// 1111 0101 反 -10
// 1111 0110 补 -10
// 0000 1010 原反补 +10
// 1111 1110 补 计算结果
// 1000 0001 反 求反
// 1000 0010 原 求原 -2

Console.WriteLine(10 | 2); // 10
// 0000 1010 原反补
// 0000 0010 原反补
// 0000 1010 原反补 10

Console.WriteLine(10 | 12); // 14
// 0000 1010 原反补
// 0000 1100 原反补
// 0000 1110 原反补 14

位与 ​​&​

Console.WriteLine(-10 & 10); // 2
// 1000 1010 原
// 1111 0101 反
// 1111 0110 补
// 0000 1010 原反补
// 0000 0010 原反补 2

Console.WriteLine(10 & 2); // 2
// 0000 1010 原反补
// 0000 0010 原反补
// 0000 0010 原反补 2

Console.WriteLine(10 & 12); // 8
// 0000 1010 原反补
// 0000 1100 原反补
// 0000 1000 原反补 8

位反 ​​~​

Console.WriteLine(~10);
// 0000 1010 原反补 +10
// 1111 0101 补 ~10
// 1000 1010 反
// 1000 1011 原
// -11


Console.WriteLine(~-10);
// 1000 1010 原 -10
// 1111 0101 反 -10
// 1111 0110 补 -10
// 0000 1001 原反补 ~-10
// 9


Console.WriteLine(~-8);
// 1000 1000 原 -8
// 1111 0111 反 -8
// 1111 1000 补 -8
// 0000 0111 原反补 ~-8
// 8

​位左移 <<​​​ 和 ​​位右移 >>​

Console.WriteLine(10 << 2); // 40  =>  10 * 2^2 = 40
// ---- 0000 1010 ----
// ---- 0000 1010 00--
// ---- --00 1010 00--
// 0010 1000
// 2^5 + 2^3 = 40

Console.WriteLine(10 >> 2); // 2 => 10 / 2^2 = 2
// ---- 0000 1010 ----
// --00 0000 1010 ----
// --00 0000 10-- ----
// 0000 0010
// 2^1 = 2

Console.WriteLine(-8 << 2); // -32 => -(8 * 2^2) = -32
// => -(8 << 2)
// ---- 0000 1000 ----
// ---- 0000 1000 00--
// ---- --00 1000 00--
// 0010 0000
// 32

Console.WriteLine(-8 >> 2); // -2 => -(8 / 2^2) = -2
// => -(8 >> 2)
// ---- 0000 1000 ----
// --00 0000 1000 ----
// --00 0000 10-- ----
// 0000 0010
// 2


举报

相关推荐

0 条评论