关于移位运算符>>和<<
2024-08-24 14:56:55
首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种。
<< 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0填充,多余位舍弃。(等同于乘2的n次方)
>> 右移运算符,二进制数据向右移动*位,就在其二进制数据后抹掉几位?(这里还不错定,但个人理解是这样的)(等同于除2的n次方)
>>> 无符号右移运算符,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。
下面我们借一个demo帮助理解:
public static void main(String[] args){
int a = 16;
int b = a << 2;//左移2,等同于16 * 2的2次方,也就是16 * 4
int c = a >> 2;//右移2,等同于16 / 2的2次方,也就是16 / 4 System.out.println("a的二进制数据为:" + Integer.toBinaryString(a));
System.out.println("a左移后二进制数据为:" + Integer.toBinaryString(b));
System.out.println("a右移后二进制数据为:" + Integer.toBinaryString(c)); System.out.println("a左移后的值为:" + b);
System.out.println("a右移后的值为:" + c);
}
}
查看运行结果,如图所示:
首先,16的二进制数据为:10000;
左移两位,10000变成1000000;
右移两位,10000变成100;
把得到的二进制数据转换成普通数据后,
a左移后的值为64,既16 * 2的2次方(16 * 4)。
a右移后的值为4,既16 / 2的2次方(16 / 4)。
看完这个demo再理解移位运算符是不是就简单很多?
最新文章
- bind绑定参数
- Tuple,Array,Map,文件操作
- DevSecOps 实施篇!系列(二)
- NTP 服务器配置
- zedboard--交叉编译Opencv库的生成 分类: shell ubuntu fool_tree的笔记本 ZedBoard OpenCV 2014-11-08 18:57 171人阅读 评论(0) 收藏
- Linux配置FTP服务器
- HDU 5781 ATM Mechine
- C# 窗体在线2,8,16进制转换以及,在线更新时间
- poj 3400 Dropping the stones
- 遍历数组中的元素(含es6方法)
- C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节
- 寒假训练——搜索 G - Xor-Paths
- linux <;<;eof
- The system is running in low-graphics mode UB16
- kbengine学习1 安装
- kafka各个版本特点介绍和总结
- spring创建单例bean
- 作死自救日记——不小心修改linux下/etc/sudoers权限的解决办法
- 一致性hash算法小结
- [uiautomator篇] uiautoviewer 定位不到元素