在Java中分别有三个移位运算符:
(1)<< 左移运算符 运算规则是--低位补0;
(2)>> 右移运算符 运算规则是--正数高位补0,负数高位补1;
(3)>>> 无符号右移运算符 运算规则是--无论正负数高位补0;
上代码:
/** * Created by DBC-PC on 2018/6/12 * * 移位运算符 >> << >>> */ public class calculator { public static void main(String[] args) { //左移运算符 << System.out.println("左移1运算开始------------低位补0"); int i=100; System.out.println("初始值"+i+"----"+Integer.toBinaryString(i)); i=i<<1; System.out.println("运算后"+i+"----"+Integer.toBinaryString(i)); //右移运算符 >> System.out.println("右移3运算开始------------正数高位补0,负数高位补1"); int j=100; System.out.println("初始值"+j+"----"+Integer.toBinaryString(j)); j>>=3; System.out.println("运算后"+j+"----"+Integer.toBinaryString(j)); //无符号(忽略正负号)右移位运算符 >>> System.out.println("无符号右移位1运算开始------------无论正负高位补0"); int k=100; System.out.println("初始值"+k+"----"+Integer.toBinaryString(k)); k>>>=1; System.out.println("运算后"+k+"----"+Integer.toBinaryString(k)); } }
运算结果:
左移1运算开始------------低位补0
初始值100----1100100
运算后200----11001000
右移3运算开始------------正数高位补0,负数高位补1
初始值100----1100100
运算后12----1100
无符号右移位1运算开始------------无论正负高位补0
初始值100----1100100
运算后50----110010
负数的测试就没有放进来,请自行测试