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

一、进制表示

  • 二进制:每一位只有两种符号表示 -> 0,1 例如 (101011)₂,也可写作101011B,其中B是Binary英文的缩写。
  • 八进制: 每一位有8种符号表示(0~7),例如(1652)₈,也可写作1652O,其中O是Octal英文的缩写。
  • 十进制:每一位有10种符号表示(0~9), 例如 (15),也可写作10D,其中D是Decimal英文的缩写。
  • 十六进制:每一位有16种符号表示,通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A - F表示10~15。例如(1652)₁₆或1652H0x165,H就是Hexadecimal英文的缩写,简称Hex。

进制只是一种进位的计数法,不局限其特定的几个形式。对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

对于我们现实世界而言,常用的是十进制,因为经过长期生活实践来说,人类有十个手指,十进制更加方便计算。而且用来表示小数、分数等比较灵活

二、整数进制之间的转换

1. 十进制转其他进制

(1)十进制转二进制

例如:9(十进制)→1001(二进制)
进制转换(二进制、八进制、十六进制、十进制)_第1张图片

(2)十进制转八进制

例如:796(十进制)→1434(八进制)
进制转换(二进制、八进制、十六进制、十进制)_第2张图片

(3)十进制转十六进制

例如:796(十进制)→31C(十六进制)
进制转换(二进制、八进制、十六进制、十进制)_第3张图片
十六进制数是由0-9和A-F(或者a-f)组成的,A相当于十进制中的10,B相当于11,依次类推,F相当与15,上述示例中取得的余数12即为十六进制中的c

总结:十进制整数转其他进制的整数方法就是采用短除法,把要转的进制X当做除数,不断进行除法计算,直至商为0,将余数逆序排列,得到的结果就是该进制数

2. 其他进制转十进制

(1)二进制转十进制

进制转换(二进制、八进制、十六进制、十进制)_第4张图片

(2)八进制转十进制

进制转换(二进制、八进制、十六进制、十进制)_第5张图片

(3)十六进制转十进制

在这里插入图片描述

总结: 其他进制转十进制整数时,从右往左依次计算自己的位权值,然后相加即可

二、小数进制之间的转换

1. 十进制转其他进制

(1)十进制小数转二进制小数

例如:0.8125(十进制)→0.1101(二进制)
进制转换(二进制、八进制、十六进制、十进制)_第6张图片

(2) 十进制小数转八进制小数

例如:10.68(十进制)→12.534(八进制)
十进制数10.68转换成八进制数,分为整数部分和小数部分求解
(1)整数部分

10/8=1 -->2
1/8=0 -->1
倒序输出为12

(2)小数部分

0.68* 8=5.44 -->5
0.44* 8=3.52 -->3
0.52* 8=4.16 -->4

已经达到了题目要求的精度,即可结束
则小数部分为:0.68–>0.534
因此10.68D -->12.534Q

(3) 十进制小数转十六进制小数

例如:25.68(十进制)→19.AE1H(十六进制)
(1)整数部分

25/16=1 -->9
1/16=0 -->1
倒序输出为12

(2)小数部分

0.68* 16=10.88 -->a(即十进制中的10)
0.88* 16=14.08 -->e
0.08* 16=1.28 -->1

已经达到了要求的精度,顺序输出为:ae1
则:25.68D -->19.ae1H

总结:十进制小数转其他进制小数要分两种情况处理

  • 如果要转换的数没有整数部分:将要转换的进制作为乘数得到积,将积的整数部分取出,用小数部分继续相乘,如此进行,直到积中的小数部分为0或达到所需要的精度,最后将整数顺序排列即可。
  • 如果有整数部分:整数部分应用除法取余(逆序排列),小数部分应用乘法取整(正序排列)。

2. 其他进制转十进制

进制转换(二进制、八进制、十六进制、十进制)_第7张图片

总结:与整数的转换方法一致,只不过小数部分要从-1开始

二、进制之间的转换(二、八、十六)

参考这位博主:https://www.kuangstudy.com/bbs/1380816189680365569

你可能感兴趣的:(计算机组成原理,c++)