萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> JavaScript按位運算符的應用簡析

JavaScript按位運算符的應用簡析

 下面根據自己的認知簡單的談一下js中的位操作使用(同樣適用於其他語言),如果有錯誤,歡迎指正

大多數語言都提供了按位運算符,按位運算符在c,c++等語言中運用廣泛,而在JS,AS等腳本語言中則沒有太多的應用例子,有時候,適當的使用按位運算符會取得很好的效果。 下面根據自己的認知簡單的談一下js中的位操作使用(同樣適用於其他語言),如果有錯誤,歡迎指正。   按位運算符是把操作數看作一系列單獨的位,而不是一個數字值。所以在這之前,不得不提到什麼是“位”: 數值或字符在內存內都是被存儲為0和1的序列,每個0和1被稱之為1個位,比如說10進制數據2在計算機內被存儲為 0 0 0 0 0 0 1 0,當我們將內存內的位值改變之後,這個值代表的意義也就變了,比如把2前移動一位, 現在存儲單元裡面變成了0 0 0 0 0 1 0 0,這個值表示的是十進制的4,這也就是按位操作符的運算原理。   按位運算符有6個 & 按位與 |按位或 ^按位異或 ~取反 >>右移 <<左移     1 & 運算符 &是二元運算符,它以特定的方式的方式組合操作數中對應的位 如果對應的位都為1,那麼結果就是1, 如果任意一個位是0 則結果就是0 1 & 3的結果為1 來看看它的怎麼運行的: 1的二進制表示為 0 0 0 0 0 0 1 3的二進制表示為 0 0 0 0 0 1 1 根據 & 的規則 得到的結果為 0 0 0 0 0 0 0 1,十進制表示就是1   只要任何一位是0 &運算的結果就是 0,所以可以用&把某個變量不必要的位設為0, 比如某個變量的二進制表示為 0 1 0 0 1 0 0 1, 我想保留低4位,消除高4位 用 & 0x0F就可以了(住:0x0F為16進制表示法,對應的二進制為 0 0 0 0 1 1 1 1),這個特性有個很重要的應用,在後面會提到。   2 | 運算符 | 跟 & 的區別在於 如果對應的位中任一個操作數為1 那麼結果就是1 1 | 3 的結果為3   3 ^ 運算符 ^運算符跟 | 類似,但有一點不同的是 如果兩個操作位都為1的話,結果產生0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 產生 0 0 0 1 1 0 1 1   4 ~ 運算符 ~是對位求反 1變0, 0變1   5 移位運算符移位運算符把位按指定的值向左或向右移動 << 向左移動 而 >> 向右移動,超過的位將丟失,而空出的位則補0   如 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1(十進制16387) 向左移動兩位將變成 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 (十進制12) 向右移動兩位則是 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0(十進制4096)     下面介紹一些具體的應用 前面提到2向前移動1位變成4 利用這個特性可以做乘法運算 2 << 1 =4 3 << 1 = 6 4 << 1 = 8 同理 >> 則可以做除法運算     任何小數 把它 >> 0可以取整 如3.14159 >> 0 = 3;   ^運算服有個神奇的特性 如以下代碼     代碼如下: <script> var n1 = 3; var n2 = 4; n1 ^= n2; n2 ^= n1; n1 ^= n2; </script>   
copyright © 萬盛學電腦網 all rights reserved