当前位置:  开发笔记 > 编程语言 > 正文

奇怪的位移行为

如何解决《奇怪的位移行为》经验,为你挑选了1个好方法。

我正在将一些ANSI C++代码移植到C#...而这现在正在扼杀我.

两项测试都有value = 6844268.

测试代码:

value >> 12
value & 0x00000FFF

C++返回18273和29497,而C#返回1670和3948.我已经尝试了C#中的每种可能的类型组合(int,uint,long,ulong,Int64 ......),但没有去:(

C++中的原始值是unsigned int.有人有主意吗?

编辑:唉,我弄乱了我的调试.正在查看数组[值]而不是值.我的错.



1> angry person..:

检查您的C++定义是否包含重写的>>运算符代码?

C#正在计算正确的值,你绝对100%确定你的价值是你所说的吗?

只是通过动议:

6844268 = 11010000110111101101100
>> 12   =             11010000110.111101101100
result  =             11010000110
result  = 2 + 4 + 128 + 512 + 1024 = 1670

  18273       =   100011101100001
6844268 >> 12 =       11010000110
                        ^^^^  ^^^ <-- mismatches

它们没有对齐,必须有一些你在代码中没有看到的细节.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有