当前位置: 首页 > article >正文

java移位操作_java 移位运算

移位运算 :将整数转化为二进制(以补码的形式),按位平移。

<<     左移

>>     右移

>>>   无符号右移

<

按位做平移,末位用0补上(正负数都一样)

a << n;

如果 a 是  byte、short、int 类型 那么 a << n 就是  a << (n%32)

int a = 5;

System.out.println(a<<3);     //输出 40

System.out.println(a<<35);   //输出 40

如果 a 是  long 类型  那么 a << n 就是  a << (n%64)

long a = 5;

System.out.println(a<<3);     //输出 40

System.out.println(a<<35);   //输出 171798691840

System.out.println(a<<67);  //输出 40

注意 :由于这只是按位平移,有可能符号化会改变

int a = 1;

a<<=31;

System.out.println(a);    //输出 -2147483648

System.out.println(Integer.toBinaryString(a));    //输出1000 0000 0000 0000 0000 0000 0000 0000

由于最高位是1所以是一个负数

>> 右移:

按位做平移

如果 a 是  byte、short、int 类型 那么 a >> n 就是  a >> (n%32)

int a = 40;

System.out.println(a>>3);     //输出 5

System.out.println(a>>35);   //输出 5

如果 a 是  long 类型  那么 a >>n 就是  a >> (n%64)

long a = 40;

System.out.println(a>>3);     //输出 5

System.out.println(a>>35);   //输出 0

System.out.println(a>>67);  //输出 5

注意 :正数右移,前补位0(正数往右移,最小为0)

System.out.println(40>>31);   //输出 0

System.out.println(Integer.toBinaryString(40>>31));  //输出 0

负数右移,前补位1(负数往右移,最大为-1)

System.out.println(-40>>31);   //输出 -1

System.out.println(Integer.toBinaryString(-40>>31));  //输出1111 1111 1111 1111 1111 1111 1111 1111

负数右移,并不仅仅是除以2

System.out.println(-5>>1);     //输出 -3

System.out.println(Integer.toBinaryString(-5));    //输出 1111 1111 1111 1111 1111 1111 1111 1011

System.out.println(Integer.toBinaryString(-5>>1));  //输出 1111 1111 1111 1111 1111 1111 1111 1101

>>>无符号右移:

按位做平移,前补位用0(正负数都一样)

如果 a 是  byte、short、int 类型 那么 a >>> n 就是  a >>> (n%32)

int a = 40;

System.out.println(a>>>3);     //输出 5

System.out.println(a>>>35);   //输出 5

如果 a 是  long 类型  那么 a >>> n 就是  a >>> (n%64)

long a = 40;

System.out.println(a>>>3);     //输出 5

System.out.println(a>>>35);   //输出 0

System.out.println(a>>>67);  //输出 5

http://www.lryc.cn/news/2413772.html

相关文章:

  • 春节灯谜及答案
  • 探秘雀魂智能助手:majsoul_wrapper项目深度剖析
  • SQuirrel SQL Client数据库连接工具的配置与使用
  • 精品PHP实现的博客网站的设计与实现
  • android权限(permission)大全
  • 1kb病毒解决方案
  • u盘低级格式化数据怎么恢复,u盘低级格式化还能恢复吗
  • FBReader源码分析之序言篇
  • 百度搜索下拉框,下拉菜单怎么做?如何刷?
  • android 4.1.2 菜单键,无惊喜功能!Android 4.1.2系统更新内容详解
  • 什么是树莓派(Raspberry Pi)
  • HTC G14(G18)刷MIUI详细刷机教程
  • Windows系统丢失olepro32.dll文件导致程序异常的问题
  • [经验栈]C#中几种定时器(timer)的区别
  • 团队拓展--真人CS团队战游戏拓展
  • 智能ABC知多少?
  • linux 下怎么将可执行文件做成镜像 开机就能运行这个可执行文件,基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法...
  • 码片序列-沃尔什函数-哈达玛矩阵详解
  • RedHat未注册yum解决方法
  • 【Struts2】【Struts2的OGNL表达式】
  • 手把手教你轻松实现listview下拉刷新
  • 《数字IC设计入门》(1)
  • 菜鸟浅谈对于Adapter及AdapterView的理解
  • CSS进阶之grid网格布局 (三):关于grid布局、grid-container属性、grid-items属性
  • 升级AndrOid4.3,三星S4升级Android 4.3系统后应用停止运行的解决办法图解
  • Ageia的PhsyX遭破 无需物理卡即可开启
  • PHP自学网:自学者的良师益友
  • GOM和GEE引擎黑屏不显示界面,装备地图怪物的解决方法
  • PHP Socket编程指南:从入门到精通
  • VC6.0 工程转到VS2008一些问题的描述及解决方法(附有VS2008发布程序介绍)