位移运算
首先要值知道符号,哪里是符号怎么标识的
一个基础知识
对于一个数值型的二进制数 首位就是它的符号位 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