飞镖/颤动按位移位操作符返回不同的值 [英] Dart/Flutter bitwise shift operator returning different values
本文介绍了飞镖/颤动按位移位操作符返回不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
与移动/桌面相比,DART/Ffltter中的位移位运算符在Web中返回的值不同。
运行以下代码:
var checksum = 1150946793;
var shift = checksum << 5;
print(shift);
//Returns the following values
Mobile/Desktop = 36830297376
Web = 2470559008
我应该为网络做些什么不同的事情吗?
推荐答案
DART将整数存储为有符号的64位值,从而使它们的可能范围从−(2^63)
到2^63 − 1
。当超过整数的最大值时,将发生回绕,最高有效位将丢失。
然而,对于编译后的JavaScript,位运算符truncate their operands to 32-bit integers。这意味着,与桌面或移动设备相比,您看到的折叠值(4294967296)要低得多。这就是您的数字计算方式不同的原因。
docs for int有一条说明说明了这一点。
这篇关于飞镖/颤动按位移位操作符返回不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文