JavaScript >>> 三個大於號無符號右移運算子

admin發表於2018-12-26

>>>運算子由三個大於號構成,是一個二進位制運算子。

也就是對二進位制數字進行操作,具有兩大特點:

(1).首先,是無符號。

(2).其次,是右移。

二進位制正負數表示法與十進位制不同,十進位制前面使用正負號表示(正號可以省略)。

二進位制數字的最高位是符號位,正數的最高位是0,負數的最高位是1。

下面將結合程式碼例項分析一下此運算子的主要特點。

以如下二進位制數字為例子進行演示:

[JavaScript] 純文字檢視 複製程式碼
00000000000000000000000011111111

上面是32位二進位制數字,轉換成十進位制是255。

所謂的右移是將二進位制數字整體向右平移,但是位數保持不變。

也就是向右移動一位,那麼右邊的數字就會被切割掉一位,在左邊再補充一位。

假如向右移動六位,上述二進位制數字變為:

[JavaScript] 純文字檢視 複製程式碼
00000000000000000000000000000011

原來二進位制數字的右邊的六個1將被切掉,左邊會補充6個0。

所謂的無符號,就是無論被右移的數字是正數還是負數,右移後,左邊空出來的位用0填充。

與有符號右移運算子不同,具體參閱JavaScript 有符號右移運算子一章節。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let view32 = new Int32Array(1);
view32[0] = 255;
  
let newNum=view32[0]>>>6;
console.log(newNum);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201812/26/002103b8hq2cz22qd21hum.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).首先建立一個32位二進位制陣列,也就是每一個陣列元素都是32位二進位制數字。

(2).將第一個陣列元素賦值為255,當然儲存的是二進位制形式。

(3).然後將第一個陣列元素的二進位制陣列右移6位,變成00000000000000000000000000000011。

(4).最後列印出結果3。

再來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let view32 = new Int32Array(1);
view32[0] = -50;
  
var newNum=view32[0]>>>6;
console.log(newNum);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201812/26/003122ht4deycet8gp7ycj.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).建立一個有符號32位二進位制陣列。

(2).陣列的第一個元素是負數。

(3).但是通過無符號右移運算子計算之後,數字變為正數。

(4).由此可見,此運算子無論對於負數還是正數,左側只會進行補零操作。

相關文章