gpt4 book ai didi

c# - 这些十六进制值如何返回真?

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:03 24 4
gpt4 key购买 nike

在处理 Github 项目时,我遇到了如下图和代码这样的行,我对它如何返回 true 感到困惑。谢谢!

代码:
Console.WriteLine((0x90 & 0x10) == 0x10);

预期结果:
错误

结果:
是的

Code

我只是不明白在比较 0x900x10 以查看它们是否相同时,它是如何返回 true 的。是因为 0x90 能被 0x10 整除吗?

最佳答案

这是一个bitwise and . (0x90 & 0x10) == 0x10 因为所有位的集合 0x900x10 恰好有共同点,恰好与0x10 中“打开”的所有位的集合。在这种特殊情况下只有一位。

Bitwise and 的意思是“给我一个新数字,当且仅当该位是这些数字中两个中的一个时,每个位都为 1”。

因此,当我将数字一个排在另一个上方时( 对齐——请注意,我从左边用零填充,因此它们的宽度相同),沿着每一列向下看以获得该列的结果:如果顶部两行均为 1,则底部行为 1。如果它在顶部的任一个行中为零,则它在底部为零。

     10010000    // == 0x90
& 00010000 // == 0x10
-------------
00010000 // == 0x10

按位运算是非常违反直觉的,除非您写出 0 和 1 并将它们按列排列。

这是另一个例子:0x98 & 0x18 == 0x18:

     10011000    // == 0x98
& 00011000 // == 0x18
-------------
00011000 // == 0x18

最后一个例子:

     10001100    // == 0x8C
& 00011000 // == 0x18
-------------
00001000 // == 0x10

关于c# - 这些十六进制值如何返回真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com