一、关于进制
所有数字在计算机底层都以二进制形式存在。
对于整数,有四种表示方式:
①二进制(binary):0,1,满2进1,以0b或0B开头。
②十进制(decimal):0-9,满10进1。
③八进制(octal):0-7,满8进1,以数字0开头。
④十六进制(hex):0-9及A-F,满16进1,以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF+1 = 0X21B0。
class BinaryTest{
public static void main(String[] args){
int num1 = 0b110; //二进制
int num2 = 110; //十进制
int num3 = 0127; //八进制
int num4 = 0x110A; //十六进制
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
System.out.println("num3 = " + num3);
System.out.println("num4 = " + num4);
}
}
二、二进制转化为十进制
Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
二进制整数有以下三种形式:
(1)原码:直接将一个数值换成二进制数。最高位是符号位。
(2)负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
(3)负数的补码:其反码加1。
计算机以二进制补码的形式保存所有的整数。
*正数的原码、补码、反码都相同。
*负数的补码是其反码+1。
举例如下:
正数转化为十进制时,直接转化。
负数转化为十进制时,先将补码减1,然后得到起其反码,接着除符号位外,取反,得到最终原码,最后按规则转化为十进制。