文章插图
前言我们都知道对于有符号数据类型,二进制最左端的数字为符号位,0代表正,1代表负,这里先介绍几个概念
逻辑左移=算术左移:高位溢出,低位补0
逻辑右移:低位溢出,高位补0
算术右移:低位溢出,高位用符号位的值补
比如一个有符号位的8位二进制数10101010,[]是添加的数字
逻辑左移一位:0101010[0]
逻辑左移两位:101010[00]
算术左移一位:0101010[0]
算术左移两位:101010[00]
逻辑右移一位:[0]1010101
逻辑右移两位:[00]101010
算术右移一位:[1]1010101
算术右移两位:[11]101010
文章插图
算术左移和算术右移主要用来进行有符号数的倍增、减半
逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半
(JAVA中是没有无符号数据类型的,C和C++中有)
文章插图
public static void main(String[] args) { // 20 System.out.println(10 << 1); // -20 System.out.println(-10 << 1); // 5 System.out.println(10 >> 1); // -5 System.out.println(-10 >> 1); // 5 System.out.println(10 >>> 1); // 2147483643 System.out.println(-10 >>> 1);}本文为小编原创文章,首发于Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注
【Java源码中>>,>>>的区别是啥?我给你彻底讲清】
推荐阅读
- 解决nginx首页中文乱码问题
- Java基础 字节流、字符流
- 茶文化阅读,潮汕茶文化
- 前端开发中Cookie详解
- Java并发的原子性、可见性、有序性
- 中国发展先进的茶文化介绍
- Redis中 Hash的原理你知道吗?
- 数据结构Java实现:循环链表和双向链表
- 中国茶文化源远流长
- Javascript创建对象方式总结