C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > 进制转换原理

二进制、八进制 、十进制、十六进制之间转换的原理详解

作者:Wy_编程

本文介绍了进制的概念及其在C语言编程中的应用,进制是进位制的简称,描述了数值在不同进制下的表示方法,常见的进制包括二进制、八进制和十六进制,二进制使用0和1表示,八进制使用0-7数字表示,十六进制使用0-9和A-F表示,文章还介绍了如何在不同进制之间进行转换

本文介绍了进制的概念及其在C语言编程中的应用,进制是进位制的简称,描述了数值在不同进制下的表示方法,常见的进制包括二进制、八进制和十六进制,二进制使用0和1表示,八进制使用0-7数字表示,十六进制使用0-9和A-F表示,文章还介绍了如何在不同进制之间进行转换,如十进制转二进制、八进制及十六进制的方法,通过具体的计算实例,读者可掌握进制转换的基本技巧。

C语言编译过程

1   gcc 源码文件.c -o 可执行文件.exe           -o生产exe
    helloWorld.c -o hell.exe  
    

1、预处理  宏定义展开、头文件展开、删除注释
    gcc -E 源码文件 -o 生成文件.i       //gcc -E helloworld.c -o hello.i    .i编译文件
2、编译    检查语法,将文件转成汇编文件
     gcc -S 预处理生成的.i文件 -o 生成文件.s   //gcc -S hello.i -o hello.s    .s汇编文件
3、汇编    将汇编文件转成二进制文件
    gcc -c hello.s -o hello.o       //
4、链接    将C语言链接库链接到程序中
    gcc hello.o -o hello.exe  

进制转换

1、进制的概念

进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

1.1 二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

1.2 八进制

八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。

1.3 十六进制

十六进制(英文名称:Hexadecimal),同我们日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9,A-F对应10-15。

进制在程序中的表现方式

十进制以正常数字1-9开头,如123
八进制以数字0开头,如0123
十六进制以0x开头,如0x123
二进制C语言不能直接书写二进制数
二进制八进制十六进制十进制
0000
1111
10222
11333
100444
101555
110666
111777
10001088
10011199
101012A10
101113B11
110014C12
110115D13
111016E14
111117F15
10000181016

十进制与二进制互转

将十进制转换成二进制(除2反序取余法)

二进制转十进制(权值法)

从二进制的末尾依次乘以2的n次幂(n是从0 开始的)

小提示: 任何数的0次幂都等于1

​ 任何数的1次幂都等于本身

十进制的 123 使用上面的方法(除2 反序取余法)得到的二进制为1111011

将1111011 转成10进制

1∗20+1∗21+0∗22+1∗23+1∗24+1∗25+1∗26=123

八进制与十进制互转

将十进制转换成八进制(除8反序取余法)

八进制转十进制(权值法)

从八进制的末尾依次乘以8的n次幂(n是从0 开始的)

3∗80+7∗81+1∗82=123

十六进制与十进制互转

将十进制转换成十六进制(除16反序取余法)

十六进制转十进制(权值法)

从十六进制的末尾依次乘以16的n次幂(n是从0 开始的)

11∗160+7∗161=123

快速转换8421法则

在对应的位置填1

4096204810245121286432168421二进制结果
1111011十进制的1231111011
1010010016410100100
11111011000200811111011000
11111101000202411111101000

二进制快速转换八进制

八进制的数和二进制数可以按位对应(八进制一位对应二进制三位)。

例:

将二进制从末尾3位一隔
十进制: 123
二进制: 1111011
八进制: 011   按照8431 法则  011 = 3
        111     按照8431 法则  111 = 7
        1       按照8431 法则  011 = 1
转换结果为173   
    
同理: 八进制转换二进制时也是将八进制每一位的值转换成3位2进制就可以了
    
    173
    1-------1
    7-------111
    3-------011
    
    二进制结果就是: 1111011
    


二进制快速转换十六进制

十六进制的数和二进制数可以按位对应(十六进制一位对应二进制四位)。

例:

将二进制从末尾3位一隔
十进制: 123
二进制: 1111011
十六进制: 1011   按照8431 法则  011 = b
        0111        按照8431 法则  111 = 7
转换结果为7b
    

16进制快速转换2进制

7B
7----------111
B----------1011

结果: 1111011

浮点型数据转换成2进制

十进制的小数转换成二进制:小数部分和2相乘,取整数,不足1取0,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果。(小数位有多少位就乘以多少次) ;从上往下取值;

将小数部分依次乘以2 如果结果中整数部分值为1 取值为1 如果为0 值
为0 小数位数有多少位 乘多少次
double a = 123.4567;

0.4567
  *2
0.9134      0
  *2
1.8268      1
0.8268    
  *2        
1.6536      1
0.6536
  *2
1.3072      1

0.4567 = 0111

总结

到此这篇关于二进制、八进制 、十进制、十六进制之间转换的原理详解的文章就介绍到这了,更多相关进制转换原理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文