栏目:JAVA 基础(<--点此查看更多)Java 数据类型|类|对象|封装|继承|多态等特性
  • 位运算 之 左移 右移

  • Tue Dec 30 21:19:09 CST 2014 编程者 我要收藏(...) 评论 ...
  • 本文简单介绍了位运算中的左移和右移
  • public class MyTest {

    /**
    * 功能说明:位运算 之 左移 右移
    * 左移运算:左移运算符m<<n表示吧m左移n位。左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0。
    * 比如:
    * 00001010 << 2 = 00101000
    * 10001010 << 3 = 01010000
    * 右移运算:右移运算符m>>n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。
    * 但右移时处理最左边位的情形要稍微复杂一点。这里要特别注意,如果数字是一个无符号数值,则用0填补最左边的n位。
    * 如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。
    * 也就是说如果数字原先是一个正数,则右移之后再最左边补n个0;
    * 如果数字原先是负数,则右移之后在最左边补n个1。下面是堆两个8位有符号数作右移的例子:
    * 00001010 >> 2 = 00000010
    * 10001010 >> 3 = 11110001
    * 补充:右移运算x>>k的行为有点微妙。一般而言,及其支持两种形式的右移:逻辑右移和算术右移。
    * 逻辑右移在左端补k个0;算术右移是在左端补k个最高有效位的值。
    * @param args
    * @author: guodongle@dfsoft.com.cn
    * @DATE:2014-12-30 @TIME: 上午10:08:21
    */
    public static void main(String[] args) {
    // A 左移的位数 n,等价于 A = A * 2 的 n 次方
    System.out.println(10 << 1);
    System.out.println(10 << 2);
    System.out.println(10 << 3);
    System.out.println(10 << 4);
    System.out.println(10 << 5);
    // A 左移的位数 n,等价于 A = A / 2 的 n 次方
    System.out.println(10 >> 1);
    System.out.println(10 >> 2);
    System.out.println(10 >> 3);
    System.out.println(10 >> 4);
    System.out.println(10 >> 5);
    }

    }

  • 信息来源:http://www.bianchengzhe.com (举报这篇文章)
  • 好评(...) 中评(...) 差评(...)