JavaScript八進位制與二進位制表示法

admin發表於2018-09-20

本文將通過程式碼例項介紹一下JavaScript中八進位制與二進位制數值表示法。

之所以要著重介紹八進位制和二進位制是因為如下兩點:

(1).ES2015之前沒有二進位制表示法。

(2).ES不同版本對八進位制表示法改變很大。

一.八進位制介紹:

首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(070 .toString());

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/20/221213o7uaa18r17316yqs.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼分析如下:

(1).數字以0起始預設表示數字是八進位制,當然並不是全部,後面會有例子。

(2).使用toString方法將數字轉換為字串,預設是轉換為十進位制。

(3).點(.)與數字之間有個空格,這不是失誤,而是為了防止將點誤讀為小數點。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(090 .toString());

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/20/221252sxx44kg9exxdodug.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

雖然數字是以0起始的,但是依然被解讀為十進位制數字。

這很容易理解,因為八進位制中不可能出現9。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
'use strict';
console.log(070 .toString());

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/20/221324okj5cdoz88kopoju.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

在嚴格模式下使用以0起始作為八進位制標識報錯了。

總結如下:

(1).ES5非嚴格模式下允許以0起始作為八進位制數字的標識。

(2).在嚴格模式下,以0起始作為八進位制數字的標識會報錯。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(0O70 .toString());

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/20/235003aiq3ozsilmnxll1z.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼是中的數字是ES2015改進的八進位制數字表示法。

分析如下:

(1).0O70是ES2015新增的八進位制數字表示法。

(2).以0O起始,第一個是零(0),第二個是字母O(octal縮寫)。

二.二進位制介紹:

ES2015之前,並沒有二進位制表示法。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
let a=10010;
let b=010010;

上面兩個都不是二進位制數字。

a是一個看上去很像二進位制的數字的十進位制數字。

b是一個八進位制數字,但是在嚴格模式下會報錯。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(0b111010 .toString());

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/20/221511p0hbv38w99k9cc3v.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼中的數字是ES2015新增的二進位制數字表示法。

分析如下:

(1).0b111010是ES2015新增的二進位制數字表示法。

(2).以0b起始,第一個是零(0),第二個是字母b(binary縮寫)。

相關文章