<返回更多

Java源码中>>,>>>的区别是啥?我给你彻底讲清

2019-07-08    
加入收藏
Java源码中>>,>>>的区别是啥?我给你彻底讲清

 

前言

我们都知道对于有符号数据类型,二进制最左端的数字为符号位,0代表正,1代表负,这里先介绍几个概念

逻辑左移=算术左移:高位溢出,低位补0

逻辑右移:低位溢出,高位补0

算术右移:低位溢出,高位用符号位的值补

比如一个有符号位的8位二进制数10101010,[]是添加的数字

逻辑左移一位:0101010[0]

逻辑左移两位:101010[00]

算术左移一位:0101010[0]

算术左移两位:101010[00]

逻辑右移一位:[0]1010101

逻辑右移两位:[00]101010

算术右移一位:[1]1010101

算术右移两位:[11]101010

Java源码中>>,>>>的区别是啥?我给你彻底讲清

 

算术左移和算术右移主要用来进行有符号数的倍增、减半

逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半

JAVA中是没有无符号数据类型的,C和C++中有)

Java源码中>>,>>>的区别是啥?我给你彻底讲清

 

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识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>