java移位操作符
来源:互联网 发布:中国战略布局知乎 编辑:程序博客网 时间:2024/06/06 04:14
java中,移位操作符操作的运算对象是二进制的“位”(bit)。
移位操作符只能处理整数类型(int,char, byte, short, long)。
移位操作符有三种:
(1)左移位操作符 “>>”:按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。
(2)(有符号)右移位操作符“<<”:按照操作符右侧指定的位数将操作符左侧的操作数向右移动。符号为正,高位补0;符号为负,高位补1。
(3)无符号右移位操作符“<<<”;按照操作符右侧指定的位数将操作符左侧的操作数向右移动,高位补0。
“移位”可与“等号”(<<=或>>=或>>>=)组合使用。此时,操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋给左边的变量。但在进行“无符号”右移位结合赋值操作时,可能会遇到一个问题:如果对byte或short值进行这样的移位运算,得到的可能不是正确的结果。它们会先被转换成int类型,再进行右移操作,然后被截断,赋值给原来的类型,在这种情况下可能得到一1的结果。
下面是一个demo
public class ShiftOp{ public static void main(String[] args){ printL(2,1); printL(4,2); printL(-2,1); printL(-4,2); printR(2,1); printR(2,2); printR(-2,1); printR(-2,3); printUR(2,1); printUR(-2,1); printUR(16,2); printUR(0,1); //保留位数 short s = (short)10000; printSR(s,1); printL(s,4); } private static void printSR(short s ,int b){ System.out.println("s:" + s + " >> " + b + " = " + (s >> b) + "-bin=" + Integer.toBinaryString(s >>= b)); }private static void printR(int s ,int b){ System.out.println(s + " >> " + b + " = " + (s >> b) + "-bin=" + Integer.toBinaryString(s >>= b)); } private static void printL(short s ,int b){ System.out.println("s:" + s + " << " + b + " = " + (s << b) + "-bin=" + Integer.toBinaryString(s <<= b) ); }private static void printL(int s ,int b){ System.out.println(s + " << " + b + " = " + (s << b) + "-bin=" + Integer.toBinaryString(s <<= b) ); } private static void printUR(int s ,int b){ System.out.println(s + " >>> " + b + " = " + (s >>> b) + "-bin=" + Integer.toBinaryString(s >>>= b) ); }}
参考资料
《java编程思想》
0 0
- Java移位操作符
- java移位操作符
- Java移位操作符
- java移位操作符
- Java移位操作符
- Java | 移位操作符
- Java中的移位操作符
- Java中的移位操作符
- Java 移位操作符注意
- java移位操作符详解
- Thinking in Java 之移位操作符
- java 移位操作符int类型
- Java 移位操作>>,<<,>>> 位逻辑运算符 &, |,~,^
- Java[探索](三)移位操作符
- Java中的移位操作
- Java中的移位操作
- Java 移位操作
- Java 移位操作
- 用简单直白的方式讲解A星寻路算法原理
- hdu1204(Markov过程,赌徒输光问题变形)
- 二分搜索
- 生成验证码
- C语言OJ项目参考(2802)判断字符串是否为回文
- java移位操作符
- bzoj 2959: 长跑(LCT+并查集)
- Java基础之内部类
- C语言OJ项目参考(2569)统计字符串种类
- 第十六周 -排序(二) 项目1 -验证算法(3)冒泡排序
- 在Keil里面仿真stm32程序出现Communication failure错误
- 支付宝支付接口中 notify_url 与 return_url 的区别是什么
- 单链表的C语言实现
- linux 下php 服务器权限问题