hb.*_*hb. -1 c c# bitwise-operators
我正在将一些ANSI C++代码移植到C#...而这现在正在扼杀我.
两项测试都有value = 6844268.
测试代码:
value >> 12
value & 0x00000FFF
Run Code Online (Sandbox Code Playgroud)
C++返回18273和29497,而C#返回1670和3948.我已经尝试了C#中的每种可能的类型组合(int,uint,long,ulong,Int64 ......),但没有去:(
C++中的原始值是unsigned int.有人有主意吗?
编辑:唉,我弄乱了我的调试.正在查看数组[值]而不是值.我的错.
检查您的C++定义是否包含重写的>>运算符代码?
C#正在计算正确的值,你绝对100%确定你的价值是你所说的吗?
只是通过动议:
6844268 = 11010000110111101101100
>> 12 = 11010000110.111101101100
result = 11010000110
result = 2 + 4 + 128 + 512 + 1024 = 1670
18273 = 100011101100001
6844268 >> 12 = 11010000110
^^^^ ^^^ <-- mismatches
Run Code Online (Sandbox Code Playgroud)
它们没有对齐,必须有一些你在代码中没有看到的细节.