进制主要分为以下四点:二进制、八进制、十进制、十六进制
以下我们来对上面的四个进制一 一讲解
二进制(基数为二)
Java中的二进制的整数是以0b或0B开头,计算机中的数据都是以二进制来进行保存的。只有0、1这两个值。
进位规则是“逢二进一”,借位规则是“借一当二”。
二进制有三种表现形式:分别是 原码、补码、反码
计算机中信息的存储单位
位(Bit):表示一个二进制数0或者是1,是计算机存储信息最基本的单位。
字节(Byte):一个字节是由8位组成的,就是用来处理8个二进制的数字。
八进制(基数为八)
Java中的八进制的整数是以0开头。现在的计算机系统中已经很少会用到八进制了。
二进制和八进制的关系图如下:
十进制(基数为十)
像我们日常生活中用到的数字就是十进制的,比如一些11、105、2000等这些
进位规则:满十进一,满二十进二,以此类推……
十六进制(基数为十六)
Java中的十六进制的整数是以0X或者0x开头,十六进制是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a-f)表示,其中:A-F表示10~15,这些称作十六进制数字。
二进制和十六进制的关系图如下:
进制转换详解如下:
在学进制转换前,先思考下为什么会存在进制转换这个过程?
答:因为计算机是以二进制的形式来进制存储
1、十进制互转二进制
(1)十进制转二进制
此处列举一个byte类型数字为10和-10的数字,下图则是十进制数利用“短除法”来获取二进制数
符号位: 0 代表正数,1 代表负数
如果是利用短除法则可以套用以下公式
整数:除2取 "余", "逆" 序排列
小数:除2取 "整", "顺" 序排列
(2)二进制转十进制
如果我们有一个二进制数那怎么将二进制数转换为十进制呢?
我们可以采用“加权系数展开式”如下:
比如我有一串二进制数:00100011
则二进制转十进制的结果为 35
如果说有小数点,比如 35.213之类的,2的-1次方则是小数点的第一位 比如 35.213的第一位小数是2
上图的向下箭头的结果是2的n次方的结果 在乘以二进制数,则可以迅速的得出十进制数
2、二进制互转八进制
如图:
此处再次使用该图,是为了方便进制转换
(1)二进制转八进制
二进制数 1000101001 ---> 八进制 按三个数字分组,从右到左 结果为 1_000_101_001 此时不够三位的一组,用0进行补位
结果为 001_000_101_001 ---> 八进制 1 0 5 1
除了使用对照表之外,还可以用短除法
(2)八进制转二进制
八进制 6315 ---> 6=110,3=011,1=001,5=101 ---> 二进制 110_011_001_101
只要对应上面的表即可快速在二进制和八进制之间转换
3、二进制互转十六进制
如图:
(1)二进制转换十六进制
二进制 01001010011101110011 ---> 二进制分组 0100_1010_0111_0111_0011 ---> 十六进制 4 A 7 7 3
(2)十六进制转换二进制
十六进制 56A6F5E ---> 二进制分组 0101_0110_1010_0110_1111_0101_1110
4、八进制互转十进制
(1)八进制转十进制
使用“加权系数展开式”来转换
八进制:173
十进制: ?
八进制:173
十进制:123
(2)十进制转八进制
使用“短除法”来转换
十进制:123 ---> 八进制: ?
十进制:123 ---> 八进制:173
大家可以去算算173和123的二进制和十六进制,结果是一样的
5、十进制互转十六进制
(1)十进制转十六进制
使用“短除法”来转换
十进制:27 ---> 十六进制:?
十进制:27 —> 十六进制:1B(11)
(2)十六进制转十进制
使用“加权系数展开式”来转换
十六进制:1B(11)---> 十进制:?
十六进制:1B(11)---> 十进制:27
大家可以去算算27和1B的二进制和八进制,结果是一样的
6、八进制互转十六进制
八转十六或者十六转八,都没有一次性完成的方法,但有两种另外的方式
(1)先将八进制转换成二进制,在将二进制转换成十六进制 或 先将十六进制转换成二进制,在将二进制转换成八进制
(2)先将八进制转换成十进制,在将十进制转换成十六进制 或 先将十六进制转换成十进制,在将十进制转换成八进制
使用哪一种都是可行的,(我自己比较喜欢第一种方式)
结尾
根据以上结论得出结果:
1、二进制在转换过程中是通用的
2、如果计算过程中用的是 短除法 则可以套用以下公式
(1)整数:除2取 "余", "逆" 序排列
(2)小数:除2取 "整", "顺" 序排列
3、任何进制只要是转换成二进制,就可以使用 短除法 或者 直接找关系图对应即可
4、八进制和十六进制的转换是不能一次性的,只能分两次,分别为:
(1)先将八进制转换成二进制,在将二进制转换成十六进制 或 先将十六进制转换成二进制,在将二进制转换成八进制
(2)先将八进制转换成十进制,在将十进制转换成十六进制 或 先将十六进制转换成十进制,在将十进制转换成八进制
5、八、十、十六 进制 转换方法
八进制转十进制 使用“加权系数展开式”来转换
十进制转八进制 使用“短除法”来转换
十进制转十六进制 使用“短除法”来转换
十六进制转十进制 使用“加权系数展开式”来转换
如果对此文章有疑问 可在评论区与我讨论,如有错误的地方,请在评论区给我留言,谢谢