位运算与进制
一、基础知识
Basic knowledge:
我们知道整数可以使用这四种基础类型:byte、short、int和long,它们分别占用1、2、4和8个字节,即8、16、32和64个比特位。
二、原码,反码和补码
在你学习位运算前,你不得不先了解何谓原码、反码和补码。
你可能听说过二进制、八进制、十进制和十六进制这些,但在计算机的世界里,它通常使用二进制进行运算。
各种进制
HEX表示十六进制
十六进制是用0~9以及A~F这十六个数码表示的数字,A~F对应的是十进制中的10~15,它的基数是16,进位规则是“逢十六进一”
示例:0xAf2 (即十进制的10*16*16 + 15*16 + 2 = 2802)
# 十六进制采用0x作为前缀,x大小写不限,注意十六进制的写法哦,后边的字符大小写不限
DEC表示十进制
十进制就是日常用的数制,用0~9这十个数码表示数字,它的基数是10,进位规则是“逢十进一”
示例:10
# 前边啥也不加。零也不要加,否则会转成八进制
OCT表示八进制
八进制就是用0~7这八个数码表示的数,它的基数是8,进位规则 是“逢八进一”
示例:012 (即十进制的10)
# 八进制采用0作为前缀,也就是说,java中的十进制前面是不能加0的,加了0就代表你写的数字是八进制
BIN表示二进制
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”
示例:0x101
# 二进制在java中用0x作为修饰前缀,注意是数字0和字母x哦,字母x大小写不限,二进制的101就是十进制的5
简记
正数三码合一,即三个码的值都一样
负数以byte型整数为例,占8个比特位,有效位为7,左边第一位(右往左数第八位,0代表正数)为1,代表负数
例如-127,绝对值为127,原码为01111111,反码为00000000,补码则是00000001
//反码在有效位取反,符号位不变,补码在反码的基础上加一
三、位运算
前面介绍了整数的二进制操作,那么在计算机操作中,往往对二进制辅以位运算,以此来达到快速运算的结果,接下来,就开始学习计算机中的位运算操作,首先将所有的位运算列出来,如下:
所有的运算用的都是补码!!!
所有的运算用的都是补码!!!
所有的运算用的都是补码!!!
运算符 | 说明 |
---|---|
<< | 左移位,在低位处补0 |
>> | 右移位 |