对于整数的形式主要有四种,我们日常生活中使用的是十进制,但是对于计算机来说,存储的形式只有0和1,即二进制,所以要想将现实生活和计算机联系起来就必须使用到进制转换,所以要想深入了解计算机,学习进制转换是十分重要的。
一、进制介绍
- 二进制:每个数位只有0和1两种表示,满2进一,Java中在开头加上0B或0b表示(这里的b指的是单词binary);
-
八进制:每个数位上的取值范围为0~7,满8进一,Java中在开头加上0表示;
-
十进制:生活中最常用的进制,每个数位上的取值范围为0~9,满10进一;
-
十六进制:每个数位上的取值范围为0~9以及A(10)~F(16),满16进一,Java中在开头加上0X或0x来表示。(这里的X指的是hexadecimal,A~F不区分大小写)
二、进制转换
1.其他进制转十进制
由其他进制转换成十进制的规则比较类似,计算的过程相同,不同的地方在于每个数位上的数范围不同,并且乘法结构的底数不同,这里我自己的理解是不同进制数所占的权重不同,底数就是权重,在不同进制转换的时候,乘上相应的权重的多少次方,而这里的次方数就是从右到左的位数,从右到左进位,所以递增。
①二进制转十进制:
规则:每个数位上的数可以理解成系数,次方数表示由右到左从0开始逐渐加一,用系数乘2的相应次方再求和,就得到最终的十进制结果了。
例如二进制数:0b1011
二进制数 | 1 | 0 | 1 | 1 |
次方数 | 3 | 2 | 1 | 0 |
那么这里就可以根据以上的规则进行运算:
则二进制数0b1011所对应的十进制数就是11。
ps.这里的次方数由右到左逐渐递增是因为在计算机中进行数据表示时,右边为低位,左边为高位。
②八进制转十进制:
规则:每个数位上的数可以理解成系数,次方数表示由右到左从0开始逐渐加一,用权重乘8的相应次方再求和,就得到最终的十进制结果了。
例如八进制数:02025(注意这里最开头的0只是八进制数的标识,并不参与转换)
八进制数 | 2 | 0 | 2 | 5 |
次方数 | 3 | 2 | 1 | 0 |
根据以上规则进行计算:
则八进制数02025对应的十进制数就是1045。
③十六进制转十进制:
规则:每个数位上的数可以理解成系数,次方数表示由右到左从0开始逐渐加一,用系数乘16的相应次方再求和,就得到最终的十进制结果了。
例如十六进制数:0x2A3F
十六进制数 | 2 | A | 3 | F |
次方数 | 3 | 2 | 1 | 0 |
根据以上的规则进行计算:
则十六进制数0x2A3F对应的十进制数就为10815。
ps.因为十六进制数需要十六位,而十进制数表示不全,所以从10到15由A~F来进行表示。
2.十进制转其他进制
十进制转其他进制的整体思路都是一样的,都是使用的短除法,用十进制数除以相应的进制,直到除尽为止,将余数倒序表示,得到的结果就是十进制数对应的其他进制数。
①十进制转二进制:
规则:将十进制数不断除以2,直到除尽,再将得到的余数反转过来,得到的结果就为对应的二进制数。
例如十进制数:19
由以上计算过程可以得出十进制数19对应的二进制数就是0b00010011,这里在高位补0,是为了凑齐8个数位,即2个字节,更符合计算机的存储方式。要注意的是这里一定要将余数反过来写。
②十进制转八进制:
规则:将十进制数不断除以8,直到除尽,再将得到的余数反转过来,得到的结果就为对应的八进制数。
例如十进制数419:
由以上的计算过程可以得出十进制数419对应的八进制数位0643。
③十进制转十六进制:
规则:将十进制数不断除以16,直到除尽,再将得到的余数反转过来,得到的结果就为对应的十六进制数。
例如十进制数541:
根据以上计算结果可知十进制数541对应的十六进制数为0x21D。这里要注意,当余数超过10的时候要转换成相对应的字母表示。
3.二进制和(八进制、十六进制)的互相转换
①二进制与八进制互相转换:
二进制转八进制:将二进制数每三个数位划分为一组,在将每组二进制数转换成对应的十进制数,再将所有的数按照顺序拼接在一起就是对应的八进制数。
八进制转二进制:与以上过程相反,将每个数位转换成对应的三位二进制数,然后再按照顺序将所有数拼接在一起就是对应的二进制数。
以下举例:
二进制数0b01001101转八进制:
二进制数 | 001 | 001 | 101 |
八进制数 | 1 | 1 | 5 |
则二进制数0b01001101对应的八进制数为0115(首位的0是八进制的标识),这里在划分的时候如果数位不够就在高位补0即可。
八进制数0254转二进制 :
八进制数 | 2 | 5 | 4 |
二进制数 | 010 | 101 | 100 |
则八进制数0254对应的二进制数就为0b10101100。
②二进制与十六进制互相转换;
二进制转十六进制:将二进制数每4个数位划分为一组,再将每组二进制数转换成对应的十进制数,然后按照顺序将所有的数拼接在一起就是对应的十六进制数。
十六进制转二进制:与上面是相反的过程,将每个数位上的数转换成对应的四位二进制数,然后按照顺序拼接起来就得到了对应的二进制数。
以下举例;
二进制数0b101101011001转十六进制:
二进制数 | 1011 | 0101 | 1001 |
十六进制数 | B | 5 | 9 |
则二进制数0b101101011001对应的十六进制数为0xB59。
十六进制数0x23A转二进制:
十六进制 | 2 | 3 | A |
二进制 | 0010 | 0011 | 1010 |
则十六进制数0x23A转换成对应的二进制数为0b001000111010。
三、使用计算机自带计算器进制转换
1.点击桌面左下角的搜索框
2.输入calc,点击打开
3.点击标准左侧的三个横线的导航,选中程序员
HEX为十六进制,DEC为十进制,OCT为八进制,BIN为二进制,点击相应的按钮输入要求的数就可以进行转换了。