设为首页 加入收藏

TOP

JAVA的位移运算
2014-11-23 20:20:36 】 浏览:233
Tags:JAVA 位移 运算

  左移操作: x << n


  x可以是byte, short, char, int, long基本类型, n(位移量)只能是int型


  编译器的执行步骤:


  1) 如果x是byte, short, char类型, 则将x提升为int;


  2) 如果x是byte, short, char, int类型, 则n被重新赋值(过程是:取n的补码的低5位再转成十进制的int值,相当对n取32模: n=n%32);


  如果x是long型, 则n被重新赋值(过程是:取n的补码的低6位再转成十进制的int值,相当对n取64模: n=n%64);


  (因为int类型为4个字节,即32位,移动32位将没有任何意义.对于long则是模64)


  3) 对x左移n个位数, 整个表达式产生一个新值(x的值不变);


  <<是左移符号,列x<<1,就是x的内容左移一位(x的内容并不改变)


  >>是带符号位的右移符号,x>>1就是x的内容右移一位,如果开头是1则补1,是0责补0,(x的内容并不改变).


  >>>是不带符号位的右移,x>>>1就是x的内容右移一位,开头补0(x的内容并不改变)


  补充说明:


  Java代码


  // 左移: 向左移动,右边补0


  for (int i = 0;i < 8 ;i++)


  System.out.print( (1 << i) + " ");


  output


  1 2 4 8 16 32 64 128


  // 右移: 向右移动,如果符号位(int型为32位)为0,左边补0,符号位为1,左边补1


  // 符号位为1的右移


  for (int i = 0;i < 8 ;i++)


  System.out.print( Integer.toHexString(0x40000000 >> i) + " ");


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JAVA中控制double和float的精度 下一篇一种Java日志系统框架的设计与实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目