位运算符

位运算符总是记得不太清楚,有朋友问起,就记一下

 

code 
//1.Not (按位非):~
  12的二进制表示:00001100
            
~12:11110011

//2.And (按位与):&
         6 : 00000110
        
10 : 00001010
6 & 10 = 2 : 00000010

//3.Or (按位或): |
          6 : 00000110
         
10 : 00001010
6 | 10 = 14 : 00001110

//4.Xor (按位异或): ^
            6 : 00000110
           
10 : 00001010
  
6 ^ 10 = 12 : 00001100        
 

//
5.Shift left (左移运算符(每一次移动都表示"乘以2")):<<
                        12 :    00001100
(左移一位) : 
12 << 1 =   24 :    00011000
(左移二位) : 
12 << 2 =   48 :    00110000
(左移五位) : 
12 << 5 =  384 :000110000000

//6.Shift right (右移运算符(每一次移动都表示"除以2")):>>
 //超过的位将丢失,而空出的位则补0
                     12 : 00001100
(右移一位) : 
12 >> 1 = 6 : 00000110
(右移二位) : 
12 >> 2 = 3 : 00000011
(右移三位) : 
12 >> 3 = 1 : 00000001
(右移三位):
-12 >> 3 =-2 :-

alert(
~12);// -13
alert(6&10);//2
alert(6|10);//14
alert(6^10);//12
alert(12<<1);//24
alert(12<<2);//48
alert(12<<5);//384
alert(12>>1);//6
alert(12>>2);//3
alert(12 >> 3);//1
alert(-12>>3);//-2  ?

 

posted @ 2009-11-29 13:18  sohighthesky  阅读(729)  评论(0编辑  收藏  举报