精度由大到小long争犸禀淫>double>int>float
范围由大到小double>float>long>int
移位运算
1)<<:左移位操作符
把2的二进制位向左移动3位,高位左移后溢出(以左为高),舍弃不用,在右边补0
2<<3:2的2进制表示法左移3位, 规律是左边的数字*2的右边的数字的次方
2的2进制应该是0000 0010,
左移3位后0001 0000
再转成十进制就是2*4=16
3<<2:3*2^2
-3<<2:-3*2^2
面试题:用最有效率的方法算出2乘以8等于几?
2<<3
2)>>:右移位操作符
表示算数右移,用来将一个数的二进制序列右移若干位,右端之后的空位用符号位填充,
如果是正数用0补,负数用1补充。
6>>2:1
00000000 00000000 00000000 00000110 6
00000000 00000000 00000000 00000110右移2位,正数补0,结果为1
00000000 00000000 00000000 00000001
-6>>2:-2
00000000 00000000 00000000 00000110 6
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6
右移两位,结果为负数
11111111 11111111 11111111 111111110
1000000000 00000000 00000000 000001
1000000000 00000000 00000000 000010 -2
3)>>>:无符号右移操作符
表示逻辑右移,用来将一个数的二进制位添0右移若干位,即向右移动若干位,
移到右端的低位被舍弃,最高位添0,它也叫无符号右移。规律:左边的数字/2^n
6>>>2:1
00000000 00000000 00000000 00000110 6
0000000000 00000000 00000000 00000110右移两位,正数补0,结果为1
-6>>>2:1073741822
11111111 11111111 11111111 11111010 -6
0011111111 11111111 11111111 11111010右移两位,补充0,结果为1073741822
4)移位操作的数据类型可以是byte,char,short,int ,long
但是对byte,char,short进行操作时会先把他们变成int型,最后得到int结果