確實巧妙:原文http://blog.csdn.net/kandyer/article/details/8241937
<script language="JavaScript">
<!--
var signed, unsigned;
signed = -1;
unsigned = signed>>>0;
alert ("unsigned="+unsigned); // unsigned=4294967295
signed = unsigned << 0;
alert ("signed="+signed); // signed=-1
//-->
</script>
代碼:
unsigned = signed>>>0;
通過使用無符號右移運算符,位動位數為0,可以將32位有符號整數,轉化為32位無符號整數。
signed = unsigned << 0;
通過使用左移運算符,位動位數為0,可以將32位無符號整數,轉化為32位有符號整數。
注:JavaScript的所有位操作都是先將操作對象轉化為32位有符號數進行的。具體的細節可以去查Ecma-262規范(JavaScript 的正式名稱是 "ECMAScript",其語法由Ecma-262規范描述)。