gpt4 book ai didi

c++ - 为什么使用十六进制?

转载 作者:IT老高 更新时间:2023-10-28 13:22:53 26 4
gpt4 key购买 nike

嘿!我正在查看此代码 http://www.gnu.org/software/m68hc11/examples/primes_8c-source.html

我注意到在某些情况下他们使用十六进制数字,例如第 134 行:

for (j = 1; val && j <= 0x80; j <<= 1, q++)

现在他们为什么要使用 0x80?我对十六进制不太擅长,但我发现了一个在线十六进制到十进制,它给了我 128 的 0x80。

同样在第 134 行之前,在第 114 行他们有这个:

small_n = (n & 0xffff0000) == 0;

十六进制到十进制给了我 4294901760 的十六进制数。所以在这一行中,他们做了一点 AND 并将结果与​​ 0 进行比较??

为什么不直接使用数字呢?任何人都可以解释一下,并请给出其他情况的例子。

我也见过大行代码,其中只是十六进制数字,但从未真正理解为什么:(

最佳答案

在您引用的两种情况下,数字的位模式都很重要,而不是实际数字。

例如,在第一种情况下,随着循环的进行,j 将是 1,然后是 2、4、8、16、32、64,最后是 128。

二进制,即

0000:00010000:00100000:01000000:1000 0001:00000010:00000100:00001000:0000

在 C(C23 之前)或 C++(C++14 之前)中没有二进制常量的选项,但在 Hex 中更清晰一些:0x01, 0x02, 0x04, 0x08, 0x10, 0x200x400x80

在第二个例子中,目标是删除值的低两个字节。所以给定一个 1,234,567,890 的值,我们希望最终得到 1,234,567,168。
十六进制更清晰:以 0x4996:02d2 开头,以 0x4996:0000 结尾。

关于c++ - 为什么使用十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/243712/

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