zoukankan      html  css  js  c++  java
  • java中逻辑右移">>>"算术右移">>"的区别?

    1、算数右移 “>>”

    考虑符号位,右移1位,若符号位为1,则左边补1;若符号位为0,则左边补0。

    2、逻辑右移 “>>>”

    不考虑符号位,左边统一补0

    例子:

    byte a = ~127;
    System.out.println(a);
    a = (byte)(a >>> 2);  //强制转成byte型,将对结果进行截断
    System.out.println(a);

    结果如下
    -128
    -32

    分析:
    首先, ~127的二进制数为10000000, (~127是取反运算)
    但是JAVA在对不足32位的数(byte,char,short)进行移位运算时, 都会先转成int(32位),所以此时a为11111111111111111111111110000000
    移位之后,(00)111111111111111111111111100000
    但是你在此a = (byte)(a >>> 2); //强制转成byte型,将对结果进行截断
    此时a为11100000, 就是32了

  • 相关阅读:
    树状数组基础
    Color the ball HDU1556
    敌兵布阵 HDU1166
    线段树基础
    T9 HDU1298
    7-6 Bandwidth UVA140
    测试方法:
    测试过程:
    爬天极网美女图片缩略图:
    爬天极网美女预览图版一:
  • 原文地址:https://www.cnblogs.com/zouhong/p/13526845.html
Copyright © 2011-2022 走看看