一、进制和说明
计算机中的数值、文字、声音、图像等任何信息,最终都会转化成二进制形式后被处理、存储和传输
二进制数的每个0或1就是一个位,位是数据存储的最小单位;8位二进制数为一个字节,字节是存储的基本计量单位
计算机中CPU位数指的是CPU一次能处理的最大位数,例如332位处理器次最多能处理32位即4字节的数据
二、形式和规则
二进制:用0-1表示,逢2进1
八进制:用0-7表示,逢8进1
十进制:用0-9表示,逢10进1
十六进制:用0-9和A~F表示,逢16进1
三、JAVA字面量
二进制:前置0b/0B;int b = 0B111010;
八进制:前置0;int o = 072;
十进制:无前置;int d = 58;
十六进制:前置0x/0X;int h = 0x3a;
四、进制的转换
十进制整数转成其他进制
把一个十进制整数转换为二进制(八进制或十六进制)整数,只需把被转换的十进制整数反复地除以2(8或16),直到商为0,所得的余数从下往上就是这个数的二进制(八进制或十六进制)表示,即“除2(8或16)取余法”
以十进制的58为例,通过如下操作得其二进制为111010
其他进制整数转成十进制
把一个非十进制整数转换成十进制整数,只需把非十进制数按位置展开,用各个位置上的数乘以进制对应数(二进制2或八进制8或十六进制16)的位置次方(幂从右即个位开始往左从0依次变大;非0数的0次方都是1),再求和
以二进制的111010为例,通过如下计算得其十进制为58
十进制小数转成其他进制
把一个十进制小数转换成二进制(八进制或十六进制)小数,只需把十进制的小数连续地乘以2(8或16),将得到的积的整数部分取出,再用余下的小数部分继续执行乘法,直到积中的小数部分为零或达到所要求的精度为止,取出的整数部分从上到下就是这个数的二进制(八进制或十六进制)表示,简称“乘2(8或16)取整法”
以十进制的0.6875为例,通过如下计算得其二进制为0.1011
其他进制小数转成十进制
把一个非十进制小数转换成十进制小数,只需把非十进制数按位置展开,用各个小数位置上的数乘以进制对应数(二进制2或八进制8或十六进制16)的位置负次方(幂从左即个位开始往右从0依次变小;一个数的负次方即为这个数的正次方的倒数,相乘的积是1的两个数互为倒数),再求和
以二进制的0.1011为例,通过如下计算得其十进制为0.6875
五、位移的运算
左移N<<n
将N的二进制位向左移动n个二进制位,并将已经移出的二进制位舍去,并在最右端补n个零。越往左移动越多,结果越大;左移的结果为N乘以2的n次方
以十进制24为例,左移两位,得其结果为96
右移N>>n
将N的二进制位向右移动n个二进制位,并将已经移出的二进制位舍去,并在最左端补n个与原来高位一样的数(正数补0负数补1),越往右移动越多,结果越小;右移的结果为N处理2的n次方
以十进制24为例,右移两位,得其结果为6
无符号右移N>>>n
将N的二进制向右移动n个二进制位后,舍弃移出的二进制位后在最左端始终只补0,这就是无符号移动