麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript中負數算術右移、邏輯右移的奧秘探索

2019-11-20 21:52:53
字體:
來源:轉載
供稿:網友
javascript中負數的算術右移和邏輯右移都十分的讓人迷惑,特別是邏輯右移>>>,你會發現即使一個很小的負數,右移之后,也會得到一個無比巨大的數,這是為什么呢?

原來在邏輯右移中符號位會隨著整體一起往右移動,這樣就是相當于無符號數的移動了,最后得到的就是一個正數,因為符號位不存在了。首先邏輯右移產生的一定是32位的數,然后負數的符號位為1,這意味著從第32位到符號位的位置全部由1填充,這樣的數能不大嗎例如-1,邏輯右移0位表現形式就是1111 1111 1111 1111 1111 1111 1111 1111 ,這樣的數是當作正數來對待的!所以將-1邏輯右移N位,最后的結果都是全為1!

左移運算保留數字的符號位。例如,如果把 -2 左移 5 位,得到的是 -64,而不是 64。“符號仍然存儲在第 32 位中嗎?”是的,不過這在 ECMAScript 后臺進行,開發者不能直接訪問第 32 個數位。即使輸出二進制字符串形式的負數,顯示的也是負號形式(例如,-2 將顯示 -10。)

有符號右移運算

有符號右移運算符由兩個大于號表示(<$lt;)。它把 32 位數字中的所有數位整體右移,同時保留該數的符號(正號或負號)。有符號右移運算符恰好與左移運算相反。例如,把 64 右移 5 位,將變為 2:

var iOld = 64; //等于二進制 1000000
var iNew = iOld >> 5; //等于二進制 10 十進制 2同樣,移動數位后會造成空位。這次,空位位于數字的左側,但位于符號位之后。ECMAScript 用符號位的值填充這些空位,創建完整的數字,如下圖所示:

無符號右移運算

無符號右移運算符由三個大于號(>>>)表示,它將無符號 32 位數的所有數位整體右移。對于正數,無符號右移運算的結果與有符號右移運算一樣。

用有符號右移運算中的例子,把 64 右移 5 位,將變為 2:

無符號右移運算用 0 填充所有空位。對于正數,這與有符號右移運算的操作一樣,而負數則被作為正數來處理。

由于無符號右移運算的結果是一個 32 位的正數,所以負數的無符號右移運算得到的總是一個非常大的數字。例如,如果把 -64 右移 5 位,將得到 134217726。如果得到這種結果的呢?

要實現這一點,需要把這個數字轉換成無符號的等價形式(盡管該數字本身還是有符號的),可以通過以下代碼獲得這種形式:

var iUnsigned64 = -64 >>> 0;

然后,用 Number 類型的 toString() 獲取它的真正的位表示,采用的基為 2:代碼如下:

alert(iUnsigned64.toString(2));

這將生成 11111111111111111111111111000000,即有符號整數 -64 的二進制補碼表示,不過它等于無符號整數 4294967232。

出于這種原因,使用無符號右移運算符要小心。

現在來說一下負數的算術右移>>:

我們發現-9>>2=-3,為什么是-3呢?

首先符號位是不變的,不參加右移,然后在9右移的過程中,最低位為1的話,那么右移之后最低位仍然為1!這是很奇怪的。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久亚洲精品 | 日韩一级片| 久草手机在线视频 | 久久tv免费国产高清 | 亚洲午夜天堂吃瓜在线 | 中午日产幕无线码1区 | 国产精品爱久久久久久久 | 成人一级黄色片 | 狠狠操视频网站 | 亚洲xxx在线观看 | 李宗瑞国产福利视频一区 | chinese18 xxxx videos| 精品国产一区二区三区在线观看 | 美女很黄很黄免费的 | 午夜精品久久久久久中宇 | 黄色大片网站在线观看 | 久久久久久久久国产 | 亚洲人成中文字幕在线观看 | 欧美在线观看视频网站 | 青青操国产 | 亚洲午夜免费 | 最新在线中文字幕 | 欧洲黄色一级视频 | 日韩99 | 国产亚洲精品久久久久5区 综合激情网 | 羞羞色网站 | 国产日韩a| 国产91中文字幕 | 日韩精品久久久久久久电影99爱 | 日韩美香港a一级毛片免费 欧美一级淫片007 | 国产一区二区三区四区在线 | 人人舔人人舔 | 黄色7777| 一本一道久久久a久久久精品91 | 午夜影院在线免费观看 | 国产亚洲小视频 | 91九色丨porny丨国产jk | 大学生a级毛片免费视频 | 免费一级a毛片在线播放视 日日草夜夜操 | 欧美人人干 | 精品久久久久久久久亚洲 |