亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript位運算符

JavaScript位運算符

慕桂英546537 2019-02-10 16:18:27
JavaScript的位運算符為什么可以取整呢?取整的原理是什么呢?比如 12.334 << 0 得出的結果是12,請問為什么呢?
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

位運算符用于對二進制位進行計算,這些位運算符直接處理每一個比特位(bit),所以是非常底層的運算,好處是速度極快,缺點是很不直觀,許多場合不能使用它們。

位運算符只對整數起作用,如果一個運算子不是整數,會自動轉為整數后再執行。雖然在JavaScript內部,數值都是以64位浮點數的形式儲存,但是做位運算的時候,是以32位帶符號的整數進行運算的,并且返回值也是一個32位帶符號的整數。

回到上面的問題:
這是左移運算符,左移運算符表示將一個數的二進制值向左移動指定的位數,尾部補0,即乘以2的指定次方(最高位即符號位不參與移動)。

左移0位,就相當于將該數值轉為32位整數,等同于取整,對于正數和負數都有效。


查看完整回答
反對 回復 2019-02-27
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

位操作符用于在最基本的層次上,即按內存中表示數值的位來操作數值。ECMAScript 中的所有數
值都以 IEEE-754 64 位格式存儲,但位操作符并不直接操作 64 位的值。而是先將 64 位的值轉換成 32 位
的整數,然后執行操作,最后再將結果轉換回 64 位。對于開發人員來說,由于 64 位存儲格式是透明的,
因此整個過程就像是只存在 32 位的整數一樣

位運算 的操作數都會先對其進行抽象的 ToInt32 操作

鏈接描述

ToUint32: (Unsigned 32 Bit Integer)

1.Let number be the result of calling ToNumber on the input argument.
2.If number is NaN, +0, ?0, +∞, or ?∞, return +0.
3.Let posInt be sign(number) × floor(abs(number)).
4.Let int32bit be posInt modulo 232; that is, a finite integer value k of Number type with positive sign and less than 232 in magnitude such that the mathematical difference of posInt and k is mathematically an integer multiple of 232.
5.Return int32bit.

三四步就是個求整取余數的過程

<<0 對實際的值沒有進行具體的位移操作,但是仍然會進行其中的 ToInt32 操作,在一定的范圍內就是簡單的按絕對值取整,超出這個范圍就會變成意想不到的值


查看完整回答
反對 回復 2019-02-27
  • 2 回答
  • 0 關注
  • 535 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號