gpt4 book ai didi

c - 按位运算比较两个比特流的长度子集

转载 作者:行者123 更新时间:2023-11-30 18:31:49 27 4
gpt4 key购买 nike

一个地址的“length”最低有效位应与另一地址的“length”最低有效位进行比较。有人可以帮助我获得最佳解决方案吗?

示例:

address1 = 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1
address2 = 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1

如果比较位为00100则以上两个地址相同。

最佳答案

显然,您想要比较 N 个最低有效位。在这种情况下,您的 N 不是掩码。 “面具”是一个具有非常特定含义的既定术语。您的 N 不是掩码。这只是您必须比较的位数。

要实现这一目标,您可以从实际从 N 生成真实掩码开始。这个

uintptr_t mask = 1;
mask = (mask << N) - 1;

将创建一个掩码,该掩码在 N 个最低有效二进制位置中具有 1。 (我不知道您使用什么类型来存储地址。您应该使用该类型来代替 uintptr_t。)

然后您可以使用该掩码来比较您的地址

(address1 & mask) == (address2 & mask)

((address1 ^ address2) & mask) == 0
<小时/>

或者,您可以完全不使用任何 mask 来解决相同的问题。如果您的地址总共有 M 位,则比较可以表示为

(address1 << (M - N)) == (address2 << (M - N))

关于c - 按位运算比较两个比特流的长度子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936481/

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