V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
c742435
V2EX  ›  程序员

这个>>>0是什么意思

  •  
  •   c742435 · 2013-08-07 16:20:44 +08:00 · 4235 次点击
    这是一个创建于 4122 天前的主题,其中的信息可能已经有所发展或是发生改变。
    var len:int = (buffer.readUnsignedByte() << 16 | buffer.readUnsignedByte() << 8 | buffer.readUnsignedByte()) >>> 0;

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

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

    那目前只能理解为 是没用又懒得删掉的代码了
    Mutoo
        10
    Mutoo  
       2013-08-08 17:20:41 +08:00
    >>>会把左边的数当作uint对待,>>>0相当于强制转换为uint
    deasel
        11
    deasel  
       2013-08-09 10:08:51 +08:00
    @c742435 js是弱类型,数字相关确实只有一个Number类型,但是也支持浮点数,所以这个操作在js里面用的还比较多。强类型语言里面应该也存在一些类似的类型转换方式吧,比如 3+''='3'。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.