仅使用
! ~ & ^ | +
如何确定 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
原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议
大概是这样的? 0x7FFFFFFF 是最大正符号 32 位二进制补码数。
我不确定,您可能需要将其强制转换为未签名才能正常工作。