-
2009-09-16
js位移运算 - [懒懒交流!=懒得交流]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.my1px.cn/logs/46615889.html
>>带符号右移 (n>>2 将整型值带符号右移2位 )
<<带符号左移 (n<<2 将整型值带符号左移2位 )
>>>无符号右移 (n>>>2 将整型值无符号右移2位 )这是我在百度时对位移运算得到一个结果。
(先感叹一下,大学四年,钱交给了学校,知识也交给学校了。游戏啊游戏,只是快意了一时哇。!_!)
在js中,如00000010 >> 2
其意义就是把数字00000010(这里是八进制,转成10进制就是8), 先变为二进制00001000往右移两位,高位补0,移位后的二进制结果为00000010,转成10进制后就是2;
同理:00000010 >> 3 结果为 00000001,十进制结果是1;
如果有小数点,则小数点后的数字不计;
如果数值过大或者过小,还得考虑溢出;
js里我试了一下,'00000010' >> 2 这样也是可以运算的
但运算结果与00000010 >> 2是不一样的......究其原因,原来'00000010'先转成数字(10进制)之后再操作的。所以,'00000010' >> 2与10>>2的结果是一样的,这也是javascript这门语言的特殊性与不规范性吧,字符型的数字还可以与number型的数字比较大小 (如'2'<3),但是,如果你以为10>>2的结果与parseInt('00000010') >> 2一样的话,那就又掉到陷阱了,这里parseInt('00000010')可是===8的而不是10的哦
在js中,很多时候,我们用n>>0或者是n<<0来去掉n里面高位的0,真正的位移运算基本没用到过爱,因仅浅浅了解一下。
收藏到:Del.icio.us








评论