0

如何将以下代码翻译为目标 c?(值是一个整数)

while (value != 0) {
    value >>>= 1;

>>> 运算符是否有通用替代品?

4

1 回答 1

1

不直接支持该操作,因此您需要使用掩码。根据value变量的大小,您需要选择不同大小的掩码。如果valueshort,请使用0x7FFF;如果valuelong long,请使用0x7FFFFFFFFFFFFF.

while (value != 0) {
    value >>= 1;
    value &= 0x7FFFFFFF;
}

或者,您可以声明value为无符号:然后常规移位分配不会对value. 事实上,将>>>运算符添加到 Java 的很大一部分原因是该语言中没有无符号类型。

于 2012-02-23T03:11:47.120 回答