java 移位运算符

移位运算符是和原码,反码,补码相挂钩的,是相互练习的,所以想搞懂移位运算符,就必须要搞懂什么是原码,什么是反码,什么是补码,他们之间是怎样去转化的,上一期已经总结了原码,反码,补码,这一期就总结一下移位运算符的相关知识,并重温原码,反码,补码
移位运算符
移位运算符它主要包括:左移位运算符(<<)、右移位运算符(>>>)、带符号的右移位运算符(>>),移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。
1.1左移运算符

左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)

正数
System.out.println(13<<3);//左移运算符,后面补0(三个0)
13的原码:00000000 00000000 00000000 001101
将这个原码后面补三个0,也就是向左边移动指定的位数(3)
移动后的13的原码再转化为十进制,答案就是104
13的原码:00000 00000000 00000000 001101000 =104

负数案例
System.out.println(-2<<3);//左移运算符,后面补0(三个0)
-2的原码:10000000 000000000 00000000 00000010
-2的反码:11111111 111111111 11111111 11111101
-2的补码:11111111 111111111 11111111 11111110
开始移位:后面补0
-2的补码(移位后):11111 111111111 11111111 11111110000
-2 的反码(移位后):11111 111111111 11111111 11111101111
-2的原码(移位后):10000 00000000 0000000 0000010000=-16

1.2 带符号的右移运算符

有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数
前面补三个0
符号扩展进行移位,即:若符号为正,则在高位插入0,若符号为负,则在高位插入1(符号位保持不变)
正数的案例
System.out.println(2>>3);
2的原码:00000000 000000000 00000000 00000010
移位后的原码:00000000 000000000 00000000 00000000=0

负数的案例
System.out.println(-20 >> 2);
-20的原码:10000000 00000000 00000000 00010100
-20的反码:11111111 11111111 11111111 11101011
-20的补码:11111111 11111111 11111111 11101100
开始移位
-20的补码:1111111111 11111111 11111111 111011
-20的反码:1111111111 11111111 11111111 111010
-20的原码:10000000 00000000 00000000 00000101=-5

无符号右移
表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
他和带符号右移的区别:

在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值