进制转换(二进制,十进制,八进制,十六进制)

进制转换是指将一个数从一种进位计数制(简称进制)表示为另一种进制的过程。常见的进制包括二进制(Base-2)、八进制(Base-8)、十进制(Base-10)和十六进制(Base-16)。不同进制的转换在计算机科学、数学和数字电子学等领域中非常重要。

进制转换的作用

  1. 数据表示:计算机内部使用二进制进行运算,而人类习惯于使用十进制。为了便于人机交互,需要在二进制和十进制之间进行转换。
  2. 简化计算:某些情况下,使用非十进制可以简化计算过程。例如,在计算机系统中,十六进制常用来表示内存地址或颜色代码,因为它们比对应的二进制表示更紧凑。
  3. 错误检测:在通信和存储系统中,不同进制的表示可以帮助发现和纠正数据传输中的错误。
  4. 编程与调试:程序员经常需要将数值在不同的进制间转换,以更好地理解程序的工作原理,尤其是在处理底层硬件时。

1.二进制(Binary):由0和1两个数字组成

2.八进制(Octal):由0-7数字组成,为了区分与其他进制的不同,开头以0开始

3.十进制(Decimal):都是以0-9这9个数字组成的,不能以0开头

4.十六进制(Hexedecimal):由0-9,A-F组成,为了区分与其它数字不同,以0x开头

二进制            八进制            十进制            十六进制
0000                0                0                0
0001                1                1                1
0010                2                2                2
0011                3                3                3
0100                4                4                4
0101                5                5                5
0110                6                6                6
0111                7                7                7
1000                10               8                8
1001                11               9                9
1010                12               10               10
1011                13               11               11
1100                14               12               12
1101                15               13               13

十进制的转换

十进制转二进制

1.十进制转二进制原理:除以2,反取余数,直到商为0终止

2.具体做法:

将某一个十进制数除以2得到的整数部分保留,作为第二次数以2的被除数,得到的余数依次记下,重复上述步骤,直到整数部分为0就结束,将所有得到的余数最终逆序过来,则为该十进制对应的二进制数

例如:
9(十进制)-->1001(二进制)
9/2=4----1
4/2=2----0
2/2=1----0
1/2=0----1


十进制转8进制;

1.原理:除以8,反向取余数,直到商为0终止

2.和2进制差不多

例如十进制866转换为八进制数:

将866除以8得到第一个余数为2,将除以8得到的整数部分108作为第二个被除数,重复操作 
直到最终整数部分为0就结束,将所取得的余数逆序输出
866/8=108----2
108/8=13-----4
13/8=1-------5
1/8=0--------1

结果为:1542
十进制转十六进制

1.转换原理:除以16,反向去余数,直到商为0为止

2.具体方法和十进制转二进制,十进制转8进制差不多

例如十进制852转换为十六进制

将852除以16得到第一个余数为4,将除以16得到的整数部分53作为第二个被除数,重复操作 
直到最终整数部分为0就结束,将所取得的余数逆序输出
852/16=53-----4
53/16=3-------5
3/16=0--------3

结果为:354

小数部分转换:

       1.十进制转二进制

        原理:十进制转成二进制小数采用乘2取整,顺序输出

例如0.74D=____B(精确到4位小数)

0.74*2=1.48----->1
0.48*2=0.96----->0
0.96*2=1.92----->1
0.92*2=1.84----->1
0.84*2=1.68----->1

结果为:0.1011   //精确到4位小数字
2.十进制转八进制:

十进制小数转八进制就是乘8取整,顺序输出

方法和思路跟转二进制一样:

例如:11.22D=___Q(精确到小数点后3位)

因为这里有整数部分还有小数部分,所以我们需要先用除以8的方式来转换整数部分
然后用乘以8来转化小数部分

整数部分:
11/8=1---3
1/8=0----1

小数部分:
0.22*8=1.76---->1
0.76*8=6.08---->6
0.08*8=0.64---->0
0.64*8=5.12---->5

结果为:13.160   //精确到小数点3位
3.十进制转十六进制

原理:十进制小数转换成十六进制小数采用乘16取整,顺序输出

思路和方法上同

例如:33.56D__H(精确到小数点后4位)

整数部分除以16,然后小数部分乘以16

整数部分:
33/16=2-----1
2/16=0------2

小数部分:
0.56*16=8.96---->8
0.96*16=15.36--->15
0.36*16=5.76----5
0.76*16=12.16---12

十六进制中的10对应a,11对应b,12对应c,13对应d,14对应e 15对应f

所以结果为:21.8f5b  精确到小数点4位

二进制的转换

二进制转十进制:

例如1101转十进制

二进制转十进制

1101
因为有4位,那么就从3,乘,3,2,1,0
1 *2^3+1 *2^2+0 *2^1+1 *2^0=8+4+0+1=13
    8       4      0       1
结果为:13
二进制转八进制

1,将二进制数按照从右到左的顺序,每3位一组进行分组,如果左边不足一组,就添加0来补全

然后将找对应

二进制对应:

1      1      1      1      1      1      1      1   
128   64      32     16     8      4      2      1
例如:
11001转换为八进制
分组:011 001 //这里补全了一个0

第一组:
0    1   1
0    2   1

第二组:
0    0   1
0    0   1


转换:011对应3,001对应1,所以结果为:31
二进制转十六进制

和二进制转八进制差不多

十六进制和二进制一样,按照从右到左的顺序,每4位为一组,如果左边不足一组,就用0来补全

例如:111011
分组: 0011 1011  //这里补全了两个0

第一组:
0   0   1   1
0   0   2   1

第二组:
1   0   1   1
8   0   2   1

转换:0011对应3,1011对应11
结果为:3c
11对应十六进制的c

八进制的转换

八进制转二进制:

将八进制的每个数字转换为对应的3位二进制数,然后将二进制数拼接起来

例如:77转换为二进制
数字7对应的二进制为:111
1   1    1
4   2    1

所以结果就是111111
八进制转十进制:
例如:八进制的56转换为十进制为:
公式如下:
5*8^1+6*8^0=40+6=46
40     6
结果为:46
八进制转十六进制:
例如:八进制的43转换为十六进制
我们可以先把八进制转换为2进制,然后二进制转换为十六进制

八进制的43转换为二进制
1      1       1       1      1        1       1     1
128    64      32      16     8        4       2     1
4=100
3=011
100011转换为十六进制就行了
分组: 0010  0011
第一组:
0   0    1    0
0    0   2    0

第二组:
0    0    1   1
0    0    2    1

结果为:23,所以43转十六进制就是23

十六进制的转换:

十六进制转二进制
例如:61DF转二进制

1     1     1       1        1      1        1        1
128   64   32       16       8      4        2        1

6=0110    //因为十六进制4位一组,所以补了1个0
1=0001   //因为十六进制4位一组,所以补了3个0  
D=13=1101
F=15=1111

结果:0110000111011111
所以十六进制转换为二进制就是110000111011111
十六进制转8进制
我们可以先把十六进制转换为二进制,然后二进制转8进制
例如:89FC转换为二进制 
1      1     1     1     1      1      1       1 
128   64    32     16    8      4      2       1

8=1000
9=1001
F=15=1111
C=12=1100
二进制为:1000100111111011
分组:001 000  100  111  111  100  //这里最左边补充了2个0
      1   0     4   7     7    4

所以十六进制的89FC转换为八进制就是104774
结果为:104774
十六进制转十进制
十六进制转十进制也可以先转二进制然后再转十进制
例如:85CD转十进制
1      1      1      1      1      1       1        1
128    64     32     16     8      4       2        1

转十六进制先转为二进制
8=1000
5=0101  //这里补全了1个0
C=12=1100
D=13=1101

然后二进制为:1000010111001101
这里可以使用公式,我觉得比较麻烦,使用对应关系比较好
如下图片

结果为:34253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值