api-二进制转换

二进制表示法

二进制就是只有0、1两个值表示的数,规则是逢二进一。

整数表示法

Java中使用补码来表示负数,具体就是除符号位之外,剩余位取反加1,符号位不变还是1(符号位0-正数,1-负数)
Java中二进制符号位是不固定的:
Byte类型的数值中,由于其为一个字节即八位取值范围为-128到127,其符号位就是第8位二进制位;
Short型数为两个字节16位数值,其符号位为第16位:
Integer为32位,Integer第32位为符号位;
Long为64位,Long型第64位为符号位。

浮点数表示法

Java中的浮点数大多数都无法精确表示,为什么呢?因为使用二进制来表示小数一样存在和十进制表示小数一样的问题,存在无限循环的小数和无限不循环的小数,比如十进制的1/3,十进制为0.333...无限个3,二进制表示同样会有这个问题,二进制表示0.1、0.2、0.3、0.4等都不能精确表示,0.5可以表示为2^(-1),可以精确表示,可见只有可以精确的使用科学计数法表示的二进制小数才能精确表示,其他的一律无法精确表示。
Java中使用32位的float和64位的double表示浮点小数。

浮点数进制转化

十进制转二进制,整数部分除以2,整除为0,否则为1,直到结果为1,然后从后窜到前的结果就是其二进制值;
小数部分的二进制化,取小数部分乘以2,结果大于等于1,取1,否则取0,再取小数部分乘以2,取值,直到结果为0或者循环。

二进制运算符

与&:全1为1,否则为0。二进制中的1的与操作具有保留原值的效果,任何值(0,1)和1进行与操作结果都不会变。这一点在HashMap中得以使用。
或|:有1为1,全0为0。二进制中的0的或操作也具有保留原值的效果,任何值(0,1)和0进行或操作结果都不会变。
非~:0为1,1为0。
异或^:相同为0,不同为1。二进制中的0的异或操作具有保留原值的效果,1的异或操作具有取反的效果。
左移<<:符号位保持不变的情况下剩余全部左移一位,低位补0,相当于乘以2的结果。
右移>>:符号位保持不变的情况下剩余全部右移一位,高位补0,相当于除以2的结果。
无符号右移>>>:全员右移一位,高位补0,相当于除以2的结果。

你可能感兴趣的:(java)