无符号右移,左移,右移操作
2013-07-15 20:43
183 查看
转载请注明出处:http://blog.csdn.net/droyon/article/details/9336083
">>>"无符号右移
操作规则:无论正负数,前面补零。
">>"右移
操作规则:正数前面补零,负数前面补1
"<<"左移
操作规则:无论正负数,后面补零。
操作结果:
">>>"无符号右移
操作规则:无论正负数,前面补零。
">>"右移
操作规则:正数前面补零,负数前面补1
"<<"左移
操作规则:无论正负数,后面补零。
public class BitmoveTest { public static void main(String args[]){ // >> 右移 前补符号位 //>>相当于除2,左移相当于乘2 int i=11; int j=-13; System.out.println("右移,前面的位补符号位"); //机器数值:0000 0000 0000 0000 0000 0000 0000 1011 //补码数值:0000 0000 0000 0000 0000 0000 0000 1011 //右移一位:0000 0000 0000 0000 0000 0000 0000 0101 System.out.println("11>>1 的值为:"+(i>>1));//结果为:5 //机器数值:1000 0000 0000 0000 0000 0000 0000 1101 //补码数值:1111 1111 1111 1111 1111 1111 1111 0011 //右移一位:1111 1111 1111 1111 1111 1111 1111 1001(补码) //结果原码:1000 0000 0000 0000 0000 0000 0000 0111(-7) System.out.println("-13>>1 的值为:"+(j>>1));//结果为:-7 System.out.println("*************************************\n"); System.out.println("左移,后面的位补零"); //机器数值:0000 0000 0000 0000 0000 0000 0000 1011 //补码数值:0000 0000 0000 0000 0000 0000 0000 1011 //左移一位:0000 0000 0000 0000 0000 0000 0001 0110 System.out.println("11<<1 的值为:"+(i<<1));//结果为:22 //机器数值:1000 0000 0000 0000 0000 0000 0000 1101 //补码数值:1111 1111 1111 1111 1111 1111 1111 0011 //左移一位:1111 1111 1111 1111 1111 1111 1110 0110(补码) //结果原码:1000 0000 0000 0000 0000 0000 0001 1010(-26) System.out.println("-13<<1 的值为:"+(j<<1));//结果为:-26 System.out.println("*************************************\n"); //>>>无符号右移 前补0 System.out.println("无符号右移,前面补零"); //机器数值:0000 0000 0000 0000 0000 0000 0000 1011 //补码数值:0000 0000 0000 0000 0000 0000 0000 1011 //右移一位:0000 0000 0000 0000 0000 0000 0000 0101 System.out.println("11>>>1 的值为:"+(i>>>1));//结果为:5 //机器数值:1000 0000 0000 0000 0000 0000 0000 1101 //补码数值:1111 1111 1111 1111 1111 1111 1111 0011 //右移一位:0111 1111 1111 1111 1111 1111 1111 1001(补码也是原码) System.out.println("-13>>>1 的值为:"+(j>>>1));//结果为:2147483641 System.out.println("*************************************\n"); } }
操作结果:
右移,前面的位补符号位 11>>1 的值为:5 -13>>1 的值为:-7 ************************************* 左移,后面的位补零 11<<1 的值为:22 -13<<1 的值为:-26 ************************************* 无符号右移,前面补零 11>>>1 的值为:5 -13>>>1 的值为:2147483641 *************************************
相关文章推荐
- 对无符号整形数的操作
- [Perl][文件操作]判断文件是否为符号链接(Unicode路径)
- shell字符串操作(长度,查找,替换,匹配)详解(shell内置一系列操作符号实现)
- oracle 命令操作 @符号
- ObjectARX编程(五) ---------符号表中层表的操作
- ln: 创建符号链接 “asm”: 不支持的操作
- [收藏]mac键盘符号和idea操作快捷键
- 有符号/无符号整数、浮点数表示,移位操作,精度截取/扩展
- 编写安全代码——小心有符号数的右移操作
- ArcGIS Engine代码共享-符号(Symbol)对象操作
- 重载操作符号
- c#位操作符号
- Java-java中的有符号,无符号操作以及DataInputStream
- Mathcad操作tips:函数、符号计算
- [VB.NET]使用ODBC更新DBF表时提示操作符号丢失 怎么弄啊
- 编写安全的代码——小心有符号数的右移操作
- 数学建模--微积分及符号函数常用操作
- 自适应管线场景符号配置操作流程
- Power Desinger 操作遇到保护符号问题
- 【转自网上,分享更多人看到】创建符号链接 “asm”: 不支持的操作