二进制表示法
二进制就是只有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的后果。