gpt4 book ai didi

c - 为什么不使用 VAL 的补码而不是 (-VAL -1)

转载 作者:太空狗 更新时间:2023-10-29 15:52:43 27 4
gpt4 key购买 nike

我正在阅读 https://github.com/antirez/redis 中的 Redis 源代码.

我在src/ziplist.c中看到了这样的宏

#define INT24_MAX 0x7fffff

#define INT24_MIN (-INT24_MAX - 1)

为什么不这样做呢?

#define INT24_MIN (~INT24_MAX)

最佳答案

一个更好的问题可能是为什么您认为 (~INT24_MAX)(-INT24_MAX - 1) 更好?

在二进制补码机上,您可以从任一表达式得到相同的结果,并且它们的计算速度与另一个一样快(对于 32 位目标,编译器会将它们都减少为 0xff800000 在编译时)。但是,在我看来,表达式 (-INT24_MAX - 1) 更好地模拟了最小值比最大值的负数小 1 的数字概念。

这可能不是很重要,但是表达式 (~INT24_MAX) 从客观的角度来看并不是更好,我认为从主观上来说它可能不是那么好。

基本上,(-INT24_MAX - 1) 可能是编码人员碰巧想到的(可能是因为正如我提到的,它模拟了数字上的意图),并且没有理由使用其他东西.

关于c - 为什么不使用 VAL 的补码而不是 (-VAL -1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16229309/

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