文章目录
前言
本文主要探讨计算机中常见的几种进制转换(二进制、十进制、十六进制)。
一、各种进制的含义
- 二进制是一种基数为2的数字系统,使用0和1两个符号表示数字。
- 十进制是一种基数为10的数字系统,使用0到9这十个符号表示数字。
- 十六进制是一种基数为16的数字系统,使用0-9和A-F来表示数字,其中A表示10,B表示11,依此类推,F表示15。每一位十六进制数可以对应四位二进制数,如0x10代表八位二进制数00010000,也就是一个字节。
二、二进制和十进制之间的相互转换
2.1 二进制转十进制
将一个二进制数转换为十进制数时,我们可以使用以下步骤:
- 从右到左,给二进制数的每一位编号,从0开始。
- 每一位上的数值乘以2的该位编号次方。
- 将所有结果相加。
举例:将二进制数10111011转换为十进制数:
从最右边开始算起
- 编号 0 ,数值 1 :1 * 2^0 = 1
- 编号 1 ,数值 1 :1 * 2^1 = 2
- 编号 2 ,数值 0 :0 * 2^2 = 0
- 编号 3 ,数值 1 :1 * 2^3 = 8
- 编号 4 ,数值 1 :1 * 2^4 = 16
- 编号 5 ,数值 1 :1 * 2^5 = 32
- 编号 6 ,数值 0 :0 * 2^6 = 0
- 编号 7 ,数值 1 :1 * 2^7 = 128
所以二进制数10111011的十进制数为:1 + 2 + 8 + 16 + 32 + 128 = 187
2.2 十进制转二进制
将一个十进制数转换为二进制数时,我们可以使用以下步骤:
- 使用短除法,将十进制数反复除2,直到商为0。
- 记录每次除法得到的余数。
- 将余数按倒序排列,即从最后一个余数到第一个余数。
举例:将十进制数187转换成二进制数:
- 187÷ 2 = 93,余 1
- 93 ÷ 2 = 46,余 1
- 46÷ 2 = 23,余 0
- 23÷ 2 = 11,余 1
- 11 ÷ 2 = 5,余 1
- 5 ÷ 2 = 2,余 1
- 2 ÷ 2 = 1,余 0
- 1 ÷ 2 = 0,余 1
将余数按倒序排列,所以十进制数187的二进制数为:10111011
总结
- 二进制转十进制:从右到左,每一位乘以2的对应次方,再将结果相加。
- 十进制转二进制: 反复除以2直到商为0为止,记录每一次计算的余数,最后再将余数按倒序排列。
三、二进制和十六进制之间的相互转换
3.1 二进制转十六进制
将一个二进制数转换为十六进制数时,我们可以使用以下步骤:
- 将二进制数分成每四位一组。不足四位的在左侧用零填补。
- 将每组二进制数转换为相应的十六进制数。
举例:将二进制数11001010转换为十六进制数:
- 从左到右分组:1100 1010
- 将每组二进制数转换为十六进制数:
- 1100 转换为 C
- 1010 转换为 A
所以,二进制数11001010的十六进制数为0xCA。
再举个例:将二进制数1100101转换为十六进制数:
不足四位的在最左侧补0,即0110 0101
- 从左到右分组:0110 0101
- 将每组二进制数转换为十六进制数:
- 0110 转换为 6
- 0101 转换为 5
所以,二进制数1100101的十六进制数为0x65。
3.2 十六进制转二进制
将一个十六进制数转换为二进制数时,我们可以使用以下步骤:
- 将每一位十六进制数转换为对应的四位二进制数。
举例:将十六进制数0xA5转换为二进制数:
- 将每位十六进制数转换为四位二进制数:
- A 转换为 1010
- 5 转换为 0101
所以,十六进制数0xA5的二进制数为10100101。
再举个例:将十六进制数0x1F3转换为二进制数:
- 将每位十六进制数转换为四位二进制数:
- 1 转换为 0001
- F 转换为 1111
- 3 转换为 0011
所以,十六进制数0x1F3的二进制数为000111110011。
总结
- 二进制转十六进制:将每四位二进制数转换为一位十六进制数,不足四位的在最左侧补0。
- 十六进制转二进制:将每一位十六进制数转换为四位二进制数。
四、十进制和十六进制之间的相互转换
4.1 十进制转十六进制
将一个十进制数转换为十六进制数时,我们可以使用以下步骤:
- 使用短除法,将十进制数反复除16,直到商为0。
- 记录每次除法得到的余数。
- 将余数按倒序排列,即从最后一个余数到第一个余数。
举例:将十进制数185转换成十六进制数:
- 185÷ 16 = 11,余 9
- 11÷ 16= 0,余 11
将余数按倒序排列,所以十进制数185的十六进制数为:0xB9
4.2 十六进制转十进制
将一个十六进制数转换为十进制数时,我们可以使用以下步骤:
- 从右到左,给十六进制数的每一位编号,从0开始。
- 每一位上的数值乘以16的该位编号次方。
- 将所有结果相加。
举例:将十六进制数0xB9转换为十进制数:
从最右边开始算起
- 编号 0 ,数值 9 :9 * 16^0 = 9
- 编号 1 ,数值 11 :11 * 16^1 = 176
所以十六进制数0xB9的十进制数为:9 + 176 = 185
总结
- 十进制转十六进制: 反复除以16直到商为0为止,记录每一次计算的余数,最后再将余数按倒序排列。
- 十六进制转十进制:从右到左,每一位乘以16的对应次方,再将结果相加。