各种进制转换(二,八,十,十六进制间转换)详解附代码

各种进制转换(二,八,十,十六进制间转换)详解附代码进制转换原理进制转换是人们利用符号来计数的方法 进制转换由一组数码符号和两个基本因素 基数 与 位权 构成 基数是指 进位计数制中所采用的数码 数制中用来表示 量 的符号 的个数 位权是指 进位制中每一固定位置对应的单位值 在知乎有个问题下的解答很不错 可以参考 打开链接他们之间的关系如下 接下来我们一一阐述 一 二 八 十六进制 转十进

进制转换

    

原理

进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。

基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。

 位权是指,进位制中每一固定位置对应的单位值。

 在知乎有个问题下的解答很不错,可以参考:打开链接

他们之间的关系如下:

wpsC01D.tmp

 

接下来我们一一阐述。

一:(二,八,十六进制)转十进制

 

方法:假设我们要将n进制转换为十进制,首先我们从n进制的右边为第一位数(从低位到高位),其权值是n的0次方,第二位是n的1次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

 

举个例子:将(1101)n  转换为十进制

(1101)n  =  1*(n)^3  + 1 * (n) ^ 2  +  0 * (n) ^ 1 + 0 * (n) ^ 0 ;

如:(1101) 2  =  1*(2)^3  + 1 * (2) ^ 2  +  0 * (2) ^ 1 + 1 * (2) ^ 0  =  13;

八进制,十六进制同样如此。

例:将十六进制的(2B)H转换为十进制的步骤如下:

1. 第0位 B x 16^0 = 11;

2. 第1位 2 x 16^1 = 32;

3. 读数,把结果值相加,11+32=43,即(2B)H=(43)D。

 

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

 

假设我们要将十进制转换为n进制

方法:除n取余法,即每次将整数部分除以n,余数为该位权上的数,而商继续除以n,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

各种进制转换(二,八,十,十六进制间转换)详解附代码
十进制转换二进制

 

例:将十进制的(796)D转换为十六进制的步骤如下:

1. 将商796除以16,商49余数为12,对应十六进制的C;

2. 将商49除以16,商3余数为1;

3. 将商3除以16,商0余数为3;

4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即(796)D=(31C)H。

下面转载自https://www.cnblogs.com/gaizai/p/4233780.html

(三) (二进制) ↔ (八、十六进制)

wpsC044.tmp

(Figure9:二进制转换为其它进制)

  • 二进制 → 八进制

  方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

  例:将二进制的(.0)B转换为八进制的步骤如下:

1. 小数点前111 = 7;

2. 010 = 2;

3. 11补全为011,011 = 3;

4. 小数点后010 = 2;

5. 011 = 3;

6. 1补全为100,100 = 4;

7. 读数,读数从高位到低位,即(.0)B=(327.234)O。

wpsC054.tmp

(Figure10:图解二进制 → 八进制)

二进制与八进制编码对应表:

二进制

八进制

000

0

001

1

010

2

011

3

100

4

101

5

110

6

111

7

 

  • 八进制 → 二进制

  方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

  例:将八进制的(327)O转换为二进制的步骤如下:

1. 3 = 011;

2. 2 = 010;

3. 7 = 111;

4. 读数,读数从高位到低位,0,即(327)O=()B。

wpsC055.tmp

(Figure11:图解八进制 → 二进制)

  • 二进制 → 十六进制

  方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

  例:将二进制的()B转换为十六进制的步骤如下:

1. 0111 = 7;

2. 1101 = D;

3. 读数,读数从高位到低位,即()B=(D7)H。

wpsC056.tmp

(Figure12:图解二进制 → 十六进制)

  • 十六进制 → 二进制

  方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

  例:将十六进制的(D7)H转换为二进制的步骤如下:

1. D = 1101;

2. 7 = 0111;

3. 读数,读数从高位到低位,即(D7)H=()B。

wpsC057.tmp

(Figure13:图解十六进制 → 二进制)

(四) (八进制) ↔ (十六进制)

wpsC058.tmp

(Figure14:八进制与十六进制之间的转换)

  • 八进制 → 十六进制

  方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

  例:将八进制的(327)O转换为十六进制的步骤如下:

1. 3 = 011;

2. 2 = 010;

3. 7 = 111;

4. 0111 = 7;

5. 1101 = D;

6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。

wpsC069.tmp

(Figure15:图解八进制 → 十六进制)

  • 十六进制 → 八进制

  方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

  例:将十六进制的(D7)H转换为八进制的步骤如下:

1. 7 = 0111;

2. D = 1101;

3. 0111 = 7;

4. 010 = 2;

5. 011 = 3;

6. 读数,读数从高位到低位,327,即(D7)H=(327)O。

wpsC06A.tmp

扩展

负数的进制转换稍微有些不同。

先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。

包含小数的进制换算:

(ABC.8C)H=10×16^2+11×16^1+12×16^0+8×16^-1+12×16^-2

=2560+176+12+0.5+0.046875

=(2748.)D

代码

下面代码来源百科(懒~)

十进制转换k进制

#include 
  
    #include 
   
     #include 
    
      char a[1000]; using namespace std; int main() { int y=0,k,n,x; char z='A'; scanf ("%d %d",&n,&x); while (n!=0) { y++; a[y]=n%x; n=n/x; if (a[y]>9) a[y]=z+(a[y]-10); else a[y]=a[y]+'0'; } for (int i=y;i>0;i--) printf ("%c",a[i]); return 0; } 
     
    
  

m进制转换十进制

#include 
  
    #include 
   
     #include 
    
      #include 
     
       char a[10000]; using namespace std; int main() { int n,m; int f=0; scanf ("%s%d",a,&m); for (int i=0;i 
       
      
     
    
  

注:用C语言的格式化输入输出可以快速转换10进制,8进制和16进制。例子:10进制转16进制:

#include 
  
    int main() { int a; scanf("%d",&a); printf("%x",a); return 0; } 
  

花费不少时间总结在一起了,望有用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206400.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:47
下一篇 2026年3月19日 下午3:47


相关推荐

  • java中的类[通俗易懂]

    java中的类[通俗易懂]4.1.类是什么?  1.类–类型–数据类型—复合数据类型—自定义复合数据类型  为什么有复合数据类型?  基本数据类型就8种,在开发中远远不够,所以我们就需要一个可以根据自己的需求随时能制作出一个自己需要的数据类型。  2.类–具有共同性质的一组事物的群体。人类。  在java中用来描述具有共同性质的一组事物的自定义的复合数据类型—类。  复合数据类型的本质—【根据自己的

    2022年7月7日
    24
  • 0 基础,不限流!满血 DeepSeek R1 搭建个人知识库,支持个性化定制

    0 基础,不限流!满血 DeepSeek R1 搭建个人知识库,支持个性化定制

    2026年3月16日
    1
  • Android退出应用程序方法总结[通俗易懂]

    Android退出应用程序方法总结[通俗易懂]Android退出应用程序方法总结在Android开发中,我们运行了应用程序后,都需要退出应用的,那么该如何退出应用,又都有哪些实现方式呢?今天就为大家整理分享一些退出应用程序的方法,一起来看看吧!更新内容Ver:v1任务管理器方法补充 新增监听式退出方法Ver:v2任务管理器方法修正 新增销毁任务栈退出方法1.finish方法finish();该方法只是结束当前Activity,系统将最上面的Activity移出了栈,并没有清理占用的资源。如果栈内有很多Activ

    2022年7月17日
    18
  • 即梦AI怎么生成图片? 即梦上传参考图生成新图的实用教程

    即梦AI怎么生成图片? 即梦上传参考图生成新图的实用教程

    2026年3月13日
    2
  • css让div居中显示

    css让div居中显示绝对居中 xx div position absolute left right bottom top 要和 position 一起使用 margin 不用 top 0 left 0 right 0 bottom 0 这样 div 框就会绝对显示在网页中间 nbsp 浮动居中 float 只有 left 和 ri

    2026年3月19日
    2
  • ONVIF协议解读

    ONVIF协议解读一 什么是 ONVIF 1 1 形成 2008 年 5 月 由安讯士 AXIS 联合博世 BOSCH 及索尼 SONY 公司三方宣布携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛 取名为 ONVIF OpenNetworkV 开放型网络视频接口论坛 并以公开 开放的原则共同制定开放性行业标准 ONVIF 标准将为网络视频设备之间的信息交

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号