java 中的位移运算

位移运算

首先要值知道符号,哪里是符号怎么标识的

一个基础知识
对于一个数值型的二进制数 首位就是它的符号位 0代表正数 1代表负数
假设一个int 类型的数值 6 再内存中的二进制标识是:
00…00110
那么 -6 则为
10…00110

位移操作

对正数6 二进制为 00…00110
那么对它进行 >> 右移操作
即 原先的00…00110 整体会移动 00…00011
就是数据全部向右边进行了一位移动,原来的第二位变成第一位 第三位变成了第二位,如此如此。

  • >> 为带符号的位移
  • >>> 为不带符号位移

有无符号

那么再看带符号和不带符号的位移

有符号位移

整数6 位移后为二进制为
00…00011
整数 -6位移后为二进制为
11…00011
由此可以理解了,带符号位:整体数据位移以后,原先的符号位是不变的。
这个就是带符号的位移

无符号位移

再来看不带符号的位移:
知道了带符号位移不带符号位移就是数据位移以后,不管你原先符号位是什么值,那么位移以后值都由0进行填充,那么位移以后的值肯定都是正数了。
举例来看
-6的不带符号位移以后二进制为
01…00011

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值