首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将代码从C转换为Java: shifts

将代码从C转换为Java: shifts
EN

Stack Overflow用户
提问于 2011-08-08 02:31:27
回答 2查看 143关注 0票数 1

我有一些C代码,其中一个无符号整数被一个(有符号)变量移位。例如,

代码语言:javascript
复制
1u << i;

当转换为Java时,我能用一个带符号的int替换它吗?

我认为左移位是安全的,但我不确定右移位。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-08 02:35:40

在Java中,有两种类型的右移位。>>>将附加0来填充正数和负数的空格(逻辑右移),而>>将附加1(如果是负数)和0(如果是正数)(符号扩展)。

在C和C++中,如果数字是正数,>>将插入零。但是,对于负数,这种情况依赖于实现。可以附加0或1。

对于>>>>>JavaScript的行为与Java相同。

在C#中,当使用>>表示负数时,除第一个外的所有暴露位都设置为0。第一个保持为1。

请注意,对于上述所有语言,带正数的>>都会附加零。只有负数的情况会有所不同。此外,对于所有语言,<<都会将0附加到公开的位。

票数 3
EN

Stack Overflow用户

发布于 2011-08-08 02:33:07

这对于左移位很好,对于右移位使用>>>运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6974829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档