java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)
来源:互联网 发布:员工监控软件 编辑:程序博客网 时间:2024/06/04 18:04
首先说明一点,本文所有的操作都是针对存储在计算机中中二进制的操作,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的。
算术左移(<<):有符号的移位操作;该操作时将运算数的二进制码整体左移指定位数(<<符号左侧为运算数,右侧为移动位数),左移之后右侧的空位用0补充。
算术右移(>>):有符号的移位操作;该操作时将运算数的二进制码整体右移指定位数(>>符号左侧为运算数,右侧为移动位数),右移之后左侧的空位正数用0补充(可省略),负数用1补充。
逻辑右移(>>>,无符号移位):无符号的移位操作;该操作时将运算数的二进制码整体左移指定位数(>>>符号左侧为运算数,右侧为移动位数),右移之后左侧的空位用0补充。
下面附上测试代码:
public class ShiftTest { public static void main (String args[]){ ShiftTest st=new ShiftTest(); st.ShiftTest(); } public void ShiftTest(){ System.out.println("*****************算术左移(<<)****************"); int lnum1=54321; System.out.println("移位前:lnum1= "+lnum1+" 二进制为:"+Integer.toBinaryString(lnum1)); lnum1=lnum1<<11; System.out.println("移位后:lnum1= "+lnum1+" 二进制为: "+Integer.toBinaryString(lnum1)); int lnum2=-54321; System.out.println("移位前:lnum2= "+lnum2+" 二进制为:"+Integer.toBinaryString(lnum2)); lnum2=lnum2<<11; System.out.println("移位后:lnum2= "+lnum2+" 二进制为: "+Integer.toBinaryString(lnum2)); System.out.println("*********************************************"); System.out.println("\n"); System.out.println("*****************算术右移(>>)****************"); int num=54321; System.out.println("移位前:num= "+num+" 二进制为:"+Integer.toBinaryString(num)); num=num>>11; System.out.println("移位后:num= "+num+" 二进制为: "+Integer.toBinaryString(num)); int num1=-54321; System.out.println("移位前:num1= "+num1+" 二进制为:"+Integer.toBinaryString(num1)); num1=num1>>11; System.out.println("移位后:num1= "+num1+" 二进制为: "+Integer.toBinaryString(num1)); System.out.println("*********************************************"); System.out.println("\n"); System.out.println("*****************逻辑右移(>>>)*****************"); int v1=54321; System.out.println("移位前:v1= "+v1+" 二进制为:"+Integer.toBinaryString(v1)); v1=v1 >>> 11; System.out.println("移位后:v1= "+v1+" 二进制为:"+Integer.toBinaryString(v1)); int v2=-54321; System.out.println("移位前:v2= "+v2+" 二进制为:"+Integer.toBinaryString(v2)); v2=v2 >>> 11; System.out.println("移位后:v2= "+v2+" 二进制为:"+Integer.toBinaryString(v2)); System.out.println("************************************************"); }}
*****************算术左移(<<)****************移位前:lnum1= 54321 二进制为:1101010000110001移位后:lnum1= 111249408 二进制为:110101000011000100000000000移位前:lnum2= -54321 二进制为:11111111111111110010101111001111移位后:lnum2= -111249408 二进制为:11111001010111100111100000000000**************************************************************算术右移(>>)****************移位前:num= 54321 二进制为:1101010000110001移位后:num= 26 二进制为:11010移位前:num1= -54321 二进制为:11111111111111110010101111001111移位后:num1= -27 二进制为:11111111111111111111111111100101**************************************************************逻辑右移(>>>)*****************移位前:v1= 54321 二进制为:1101010000110001移位后:v1= 26 二进制为:11010移位前:v2= -54321 二进制为:11111111111111110010101111001111移位后:v2= 2097125 二进制为:111111111111111100101************************************************
0 0
- java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)
- 算术左移(<<),算术右移(>>),逻辑右移(>>>)
- 左移 右移 逻辑右移 算术右移
- java 逻辑右移,算术右移
- java的算术右移(>>)与逻辑右移(>>>)
- java的算术右移(>>)与逻辑右移(>>>)
- java的算术右移(>>)与逻辑右移(>>>)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java中逻辑右移">>>"算术右移">>"的区别
- java中逻辑右移">>>"算术右移">>"的区别
- java中逻辑右移">>>"算术右移">>"的区别
- LeetCode
- iBET Online Casino─ MG Platform Information(Casino Platform Info, iBET, iBET MG, iBET Online Casino,
- 关于字符串的比较
- Visual Studio各版本工程文件之间对应关系
- ScrollView嵌套ListView设置默认位置为最顶部的解决方案
- java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)
- 网上图书商城视频教程day02
- TCP服务器端口数,最大连接数以及MaxUserPort的关系辨真
- vs工程配置优美的背景图片
- QDateTime类的部分函数使用解析
- iptables防火墙如何开放ftp端口
- spring and Mockito
- 制作单周期CPU(分析)
- gcc编译C++程序