在目标c中替换java按位运算符

时间:2012-02-23 03:09:54

标签: objective-c bit-manipulation code-translation

如何将以下代码翻译为目标c? (值为int)

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

是否有>>>的一般替代品?操作

1 个答案:

答案 0 :(得分:1)

不直接支持该操作,因此您需要使用掩码。根据{{​​1}}变量的大小,您需要选择不同大小的蒙版。 如果valuevalue,请使用short;如果0x7FFFvalue,请使用long long

0x7FFFFFFFFFFFFF

或者,您可以将while (value != 0) { value >>= 1; value &= 0x7FFFFFFF; } 声明为无符号:然后常规的shift-assign不会对value进行签名扩展。实际上,将value运算符添加到Java中的主要原因是该语言中缺少无符号类型。