gpt4 book ai didi

c++ - 按段比较 64 位整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:42 27 4
gpt4 key购买 nike

我有两个 64 位整数 xy .每一位代表5个无符号短整数:前10位代表第一个整数,接下来的13位代表第二个整数,接下来的16位代表第三个整数,接下来的14位代表第四个整数,其余位代表第 5 个整数。

x0 , x1 , x2 , x3 , x4是构成x的5个短整数.让y0 , y1 , y2 , y3 , y4是构成y的5个短整数.我需要知道 x0 < y0x1 < y1x2 < y2x3 < y3x4 < y4 .

我认为最简单的解决方案是转移:

bool allLess(std::size_t x, std::size_t y)
{
if(x >= y) return 0;
int shift[] = {10, 13, 16, 14};
for(int i = 0; i < 4; ++i)
{
x <<= shift[i];
y <<= shift[i];
if(x >= y) return 0;
}
return 1;
}

我知道有很多按位体操。任何更快的解决方案?

最佳答案

这并没有真正回答提出的问题,但解决了一个非常相似的问题:(如果有人能够重新组织实际问题,这可能会有所帮助,比如 OP)

如果整数没有紧密排列(即如果每个“字段”之间和 MSB 末尾有单个零位填充),并且您想知道 <=而不是 < ,我认为您可以只减去数字并检查是否有任何填充位发生变化。 (即 (y - x) & PADDING_MASK)

关于c++ - 按段比较 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50663315/

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