[英]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.