gpt4 book ai didi

c++ - 如何在不使用类次的情况下找到 TMax

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:33 26 4
gpt4 key购买 nike

仅使用

 ! ~ & ^ | +

如何确定 32 位数字是否为 TMax?

TMax 是最大值,二进制补码。

到目前为止我的想法是:

int isTMax(int x)
{
int y = 0;
x = ~x;
y = x + x;
return !y;
}

这只是我尝试过的许多失败的事情之一,但我只是想不出 TMax 的属性可以让我恢复 TMax。就像将 tmax 添加到自身与所有其他整数相比将是唯一的。


这是实际问题:

/*
* isTMax - return 1 if x is the maximum, two's complement number,
* and 0 return otherwise.
* Legal ops: ! ~ & ^ | +
* Max ops: 10
* Rating: 1
*/
int isTMax(int x) {
int y = 0;
x = ~x;
y = x + x;

return !y;
}

int 是 32 位,所以最大有符号数可能是 0x7FFFFFFF

最佳答案

据我所知,在不知道某个类型的最大值并进行直接比较的情况下,无法确定某个特定值是否是有符号 类型的最大值。这是因为带符号的表达式在溢出时会遇到未定义的行为。如果您的问题有答案,则意味着存在一个严重的未解决问题的答案,这个问题已经在 SO 上浮现了一段时间:如何以编程方式确定给定签名类型的最大值。

关于c++ - 如何在不使用类次的情况下找到 TMax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300650/

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