繁体   English   中英

C# 中整数的逻辑与运算

[英]Logical AND operation with integers in C#

当我对 C# 中的数字执行以下逻辑与运算时,我得到以下结果:

 -3 & 3 = 1
 -1 & 1 = 1
  0 & 0 =0

但是当我做8 & -8 =8有人能解释一下我们是如何得到结果为 8 的吗?

如果您查看十六进制格式的数字,它将帮助您了解如何执行计算。

假设您将数字存储为整数:

3  = 0x00000003
8  = 0x00000008 
-3 = 0xFFFFFFFD
-8 = 0xFFFFFFF8

然后,如果我们放大最小的半字节(4 位,请考虑以下内容):

对于 3 & -3

  0 0 1 1
& 1 1 0 1
  -------
  0 0 0 1    =  1

对于 8 和 -8

  1 0 0 0
& 1 0 0 0
  -------
  1 0 0 0   = 8

要查看发生了什么,您可以使用以下命令:

static void Main(string[] args)
{
    show(8);
    show(-8);
}

static void show(int i)
{
    Console.WriteLine($"{i,3} = 0b{Convert.ToString(i, 2).PadLeft(32, '0')}");
}

Output:

  8 = 0b00000000000000000000000000001000
 -8 = 0b11111111111111111111111111111000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM