这个>>>0是什么意思

2013-08-07 16:20:44 +08:00
 c742435
var len:int = (buffer.readUnsignedByte() << 16 | buffer.readUnsignedByte() << 8 | buffer.readUnsignedByte()) >>> 0;

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

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

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

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

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

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

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

© 2021 V2EX