色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 移位運算

錢淋西1年前6瀏覽0評論

當我們處理數(shù)字時,通常會使用的運算符有加、減、乘、除等。而在js中還有一類運算符,那就是移位運算符。移位運算符可以讓我們對數(shù)字進行二進制位的移動,進而實現(xiàn)一些效果。

在移位運算中,有三種運算符:左移(<<)、右移(>>)、和無符號右移(>>>)。以下是它們的基本語法:

var a = 2; //二進制:10
//左移1位
var b = a<< 1; //二進制: 100
//右移1位
var c = a >>1; //二進制: 1
//無符號右移1位
var d = a >>>1; //二進制: 1

接下來,我們分別介紹一下這三種運算符及其應(yīng)用。

左移運算符(<<):將二進制數(shù)向左移動指定的位數(shù)。左移過程中,右側(cè)補 0,也就是在后面插入 0。比如將一個數(shù)左移1位,相當于將這個數(shù)乘以 2。就像這樣:

var a = 2; //二進制:10
//左移1位
var b = a<< 1; //二進制: 100

右移運算符(>>): 將二進制數(shù)向右移動指定的位數(shù)。右移過程中,左側(cè)根據(jù)符號位填充,也就是對于正數(shù)填充 0,負數(shù)填充 1。比如將一個數(shù)右移1位,相當于將這個數(shù)除以 2。就像這樣:

var a = 2; //二進制:10
var b = -2; //二進制:11111111111111111111111111111110
//右移1位
var c = a >>1; //二進制: 1
var d = b >>1; //二進制: 11111111111111111111111111111111

無符號右移運算符(>>>): 將二進制數(shù)向右移動指定的位數(shù)。右移過程中,左側(cè)補 0,忽略符號位的填充規(guī)則。比如將一個數(shù)無符號右移1位,相當于將這個數(shù)除以 2,不管這個數(shù)的符號是怎樣的,都會將二進制最左側(cè)的 1(如果存在)丟棄。就像這樣:

var a = 2; //二進制:10
var b = -2; //二進制:11111111111111111111111111111110
//無符號右移1位
var c = a >>>1; //二進制: 1
var d = b >>>1; //二進制: 01111111111111111111111111111111

在開發(fā)中,移位運算可以實現(xiàn)一些妙用。比如快速計算 2 的 n 次方:

var a = 2; //2的0次方
var b = a<< 1; //2的1次方
var c = b<< 1; //2的2次方
var d = c<< 1; //2的3次方

以上代碼就實現(xiàn)了從 2 的 0 次方到 2 的 3 次方的快速計算。這種方法用于數(shù)據(jù)量較小,需要頻繁計算的場合。

再比如,移位運算可以實現(xiàn)一些二進制相關(guān)的操作,比如獲取二進制數(shù)的某一位值:

//獲取二進制數(shù)的第 2 位
var num = 10; // 二進制:1010
var bit = 2;
var val = (num >>(bit - 1)) & 1; 
console.log(val); //輸出 1

以上代碼就可以輸出二進制數(shù) 1010 的第 2 位值,也就是1。

總的來說,移位運算符可以讓我們更加靈活地處理數(shù)字,以適應(yīng)開發(fā)中的各種要求。當然,使用移位運算符需要注意一些細節(jié),比如溢出、精度等問題,不同的運算符還存在不同的特性。因此在使用時需要根據(jù)具體需求進行選擇。