这个>>>0是什么意思

2013 年 8 月 7 日
 c742435
var len:int = (buffer.readUnsignedByte() << 16 | buffer.readUnsignedByte() << 8 | buffer.readUnsignedByte()) >>> 0;

AS3语言,Pomelo框架的Package.as文件。

在我看来似乎不加>>>0也可以正常工作?
5153 次点击
所在节点    程序员
11 条回复
bindiry
2013 年 8 月 7 日
cxe2v
2013 年 8 月 7 日
多打了一个>???
貌似此处应该是>>啊
williamx
2013 年 8 月 7 日
>>> bitwise unsigned right shift
fancle
2013 年 8 月 8 日
相当于int(),但据说效率更高
cxshun
2013 年 8 月 8 日
话说貌似每个语言都有吧,无符号右移。但移0位貌似没啥用啊,这代码是坑人的吗?
williamx
2013 年 8 月 8 日
呀,只看到了>>>,没有看到0。应该一开始是有值的,后来改成0。我也经常这么干。
deasel
2013 年 8 月 8 日
JS里面常常会用到这个,>>>0 其实是一个(快速)取整的操作。不知道AS里面是不是也是这样
c742435
2013 年 8 月 8 日
@fancle 本身读出来的也是整数啊。
另外这个操作可以取整?你的意思是可以用在浮点数上吗?
c742435
2013 年 8 月 8 日
@deasel 这个操作是用在浮点数上的吗?
e我不太清楚js里有没有浮点数这个概念……不过as本身是强类型的,应该用不到这个取整操作吧。

那目前只能理解为 是没用又懒得删掉的代码了
Mutoo
2013 年 8 月 8 日
>>>会把左边的数当作uint对待,>>>0相当于强制转换为uint
deasel
2013 年 8 月 9 日
@c742435 js是弱类型,数字相关确实只有一个Number类型,但是也支持浮点数,所以这个操作在js里面用的还比较多。强类型语言里面应该也存在一些类似的类型转换方式吧,比如 3+''='3'。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/78309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX