Java和C ++中的位移差异-如何调和

nsfy33

我有一些C ++代码正在尝试移植到Java,但有一个我无法解决的问题。

用一个例子很容易看出。在C ++代码的某个阶段,我有一个无符号int h,其值为594076817。然后,我计算(h << 10)。我得到结果2744271872。

在Java中,我有一个很长的594076817。然后我计算(h << 10),得到608334660608。

我了解/怀疑这是由于表示形式的差异(无符号与有符号)造成的,并且已经尝试按照这些原则进行阅读而无济于事。使Java代码获得与C ++代码相同的结果的最佳方法是什么?

格特曼

C ++代码似乎在32位整数上运行。使用Java的32位整数类型int,代码

int h = 594076817;
System.out.println(h << 10);

打印-1550695424(对Javaint进行签名)。这是2744271872-2 32当数据类型更改为64位整数类型时long,答案将更改:

long h = 594076817L;
System.out.println(h << 10);

打印608334660608当截断的低32位以外的所有内容时608334660608,您会得到int答案:2744271872

要获得所需的结果(似乎依赖于C ++中的溢出),请long在Java中使用,但使用进行位与运算以对后32位进行位掩码0xFFFFFFFFL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调和Wikipedia在OpenRefine中的文章标题?

来自分类Dev

基础和位移之间的差异

来自分类Dev

在 C++ 中,é 如何按位移位为 E?

来自分类Dev

C#中的位移问题

来自分类Dev

如何仅通过测试类的接口来调和单元测试方法和TDD

来自分类Dev

如何基于Seaborn Catplot中的色调和col类别过滤熊猫数据框?

来自分类Dev

如何基于Seaborn Catplot中的色调和col类别过滤熊猫数据框?

来自分类Dev

如何在C ++中获得(无序)集合差异或对称差异?

来自分类Dev

按位移位和字节强制转换在Java和C#中给出不同的结果

来自分类Dev

按位移位和字节强制转换在Java和C#中给出不同的结果

来自分类Dev

c中的位移运算符替换

来自分类Dev

接口在C#和Java中的实现差异

来自分类Dev

位移与位移+和掩蔽

来自分类Dev

如何拆分、比较和查找连接列表中的差异

来自分类Dev

如何获得html和js中字段的差异?

来自分类Dev

按位移位和Bash中的最大整数

来自分类Dev

如何获得java中2个对象字段之间的差异

来自分类Dev

Java中带字节的位移位的怪异行为

来自分类Dev

Java中字节数组的位移操作

来自分类Dev

在Java中使用常数1中的按位移位的优势

来自分类Dev

C中十六进制的位移位(旋转)

来自分类Dev

c中的位移移位乘法不使用2的幂

来自分类Dev

Java中的回调和观察者模式有什么区别

来自分类Dev

使用回调和RegEx方法将JavaScript代码转换为C#中的等效代码

来自分类Dev

如何使用rlang :: enquo调和.data代词

来自分类Dev

如何调和purrr :: map与case_when

来自分类Dev

Java和C#之间的加密差异

来自分类Dev

C ++ Windows:LRESULT回调和WNDPROC

来自分类Dev

C ++ Windows:LRESULT回调和WNDPROC

Related 相关文章

热门标签

归档