如何将以下代码翻译为目标c? (值为int)
while (value != 0) {
value >>>= 1;
是否有>>>的一般替代品?操作
答案 0 :(得分:1)
不直接支持该操作,因此您需要使用掩码。根据{{1}}变量的大小,您需要选择不同大小的蒙版。
如果value
为value
,请使用short
;如果0x7FFF
为value
,请使用long long
。
0x7FFFFFFFFFFFFF
或者,您可以将while (value != 0) {
value >>= 1;
value &= 0x7FFFFFFF;
}
声明为无符号:然后常规的shift-assign不会对value
进行签名扩展。实际上,将value
运算符添加到Java中的主要原因是该语言中缺少无符号类型。