乐趣区

关于java: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 的后果。

退出移动版