------- android培训、java培训、期待与您交流! ----------
左移 又移
<< >>
左移:3<<2=12:0000-0000 0000-0000 0000-0000 0000-0011
左移两位:00-0000 0000-0000 0000-0000 0000-001100
右移:6>>2= 1 :0000-0000 0000-0000 0000-0000 0000-0110
右移两位:000000-0000 0000-0000 0000-0000 0000-01
左移 3<<2=12; 3<<1=6; 3<<3=24;
3*2(2)=12 3*2(1)=6 3*2(3)=24
总结:<<其实就是乘以2的移动位数次幂
右移 6>>2=1; 6>>1=3
6/2(2)=1; 6/2(1)=3
总结:>>其实就是除以2的移动位数次幂
>>:最高位补什么由原来数据的最高位值而定。
如果最高位0;右移后,用0补空位
如果最高位1,右移后,用1补空位
>>>:无论最高位是什么,右移后,都用0来补
与----- &:6 & 3=2;
110
& 011
————
010=2;
总结:两边都为真则为真,否则为假。
或---- |:6|5=7;
110
| 101
________
111=7;
总结:同假为假,其余为真。
异或---- ^: 6^5=3;
110
^ 101
________
011=3;
总结:两边相同为假,两边相异为真。
一个数异或同一个数两次是其本身;
反码 ~ ~6=-7
000.....000110
111.....111001 =-7
000.....000001
111.....111000
000.....000111 =
总结:7变-7为取反再加一;
-7变7 则为减一再取反;
而反码则为直接取反;
位运算:2*8=16
其最高效的运算是位运算;左移三位;2<<3=16
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/