飞镖/颤动按位移位操作符返回不同的值 [英] Dart/Flutter bitwise shift operator returning different values

查看:11
本文介绍了飞镖/颤动按位移位操作符返回不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

与移动/桌面相比,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆