java 移位运算

    技术2022-05-12  23

    位运算笔记: >> 右移位 运算数向右移出若干位 ,移出的右端比特值舍弃,左端补原符号位的值。 << 左移位 运算数向左移出若干位,移出的左端高位比特值舍弃,右端低位补零。 >>>按位右移且补零  运算数向右移出若干位,移出的右端比特值舍弃,左端补零。 public   class  BasicMath  {    public static void main(String[] args) {               System.out.println(17>>3);//2        System.out.println(17<<3);//136        System.out.println(-17>>3);//-3        System.out.println(-17<<3);//-136        System.out.println(-17>>>3);//536870909            }}     计算机中存放数据都是以补码形式,正数的原码和补码相同,负数的补码是其反码加1。     17 (int类型占32位)的原码补码:     0000 0000 0000 0000 0000 0000 0001 0001        0000 0000 0000 0000 0000 0000 0001 0001(17>>3=2)     0000 0000 0000 0000 0000 0000 0000 0010      0000 0000 0000 0000 0000 0000 0001 0001(17<<3=136)     0000 0000 0000 0000 0000 0000 1000 1000         -17的反码:     1111 1111 1111 1111 1111 1111 1110 1110     -17补码:(反码+1)     1111 1111 1111 1111 1111 1111 1110 1111     1111 1111 1111 1111 1111 1111 1111 1101(-17>>3=-3)     1111 1111 1111 1111 1111 1111 0111 1000 (-17<<3=-136)     0001 1111 1111 1111 1111 1111 1111 1101 (-17>>>3=536870909)

    最新回复(0)