我有一些C代码,其中一个无符号整数被一个(有符号)变量移位。例如,
1u << i;当转换为Java时,我能用一个带符号的int替换它吗?
我认为左移位是安全的,但我不确定右移位。
发布于 2011-08-08 02:35:40
在Java中,有两种类型的右移位。>>>将附加0来填充正数和负数的空格(逻辑右移),而>>将附加1(如果是负数)和0(如果是正数)(符号扩展)。
在C和C++中,如果数字是正数,>>将插入零。但是,对于负数,这种情况依赖于实现。可以附加0或1。
对于>>和>>>,JavaScript的行为与Java相同。
在C#中,当使用>>表示负数时,除第一个外的所有暴露位都设置为0。第一个保持为1。
请注意,对于上述所有语言,带正数的>>都会附加零。只有负数的情况会有所不同。此外,对于所有语言,<<都会将0附加到公开的位。
发布于 2011-08-08 02:33:07
这对于左移位很好,对于右移位使用>>>运算符。
https://stackoverflow.com/questions/6974829
复制相似问题