进制的转换

1、进制的转化

(1)进制介绍

对于进制,有四种表示方法:

1)二进制:0,1,满2进1,C语言中没有二进制常数的表示方法

2)八进制:0-7,满8进1

3)十进制:0-9,满10进1

4)十六进制:0-9及A-F(A-F分别表示10~15),满16进1.以0X或者0x表示,此处的A-F不区分大小写。

2、进制的转换

(1)进制转换的介绍

第一组(其他进制转换十进制)

1)二进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以2的(位数减1)次方,然后求和。

2)八进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数减1)次方,然后求和。

3)十六进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数减1)次方,然后求和。

0x34A(16进制)=842(十进制),虽然A在16进制中表示10,但是它植被看做一位,所以0x34A=10*16^(1-1)+4*16^(2-1)+3*16^(3-1)=842。

第二组(十进制转换其他进制)

1)十进制转二进制

规则:将该数不断除2,直到商为0为止,然后将每步得到的余数都倒过来,就是对应的二进制数。

56(十进制)=111000(二进制)

56/2=28...0 28/2=14...0 14/2=7...0 7/2=3...1 3/2=1...0 1/2=0...1

所得余数为000111,他代表的十进制数是1*2^(1-1)+1*2^1+1*2^2=7,将这个余数反过来之后,就变成了111000,他代表的十进制数是1*2^3+1*2^4+1*2^5=56。

这个例子有些特殊,我们看似是把每位取反,实则不然,而是将每一位和其对称的那一位的位置进行了调换。

2)十进制转八进制

规则:将该数不断除8,直到商为0为止,然后将每步得到的余数都倒过来,就是对应的八进制数。

156(十进制)=234(八进制)

156/8=19...4 19/8=2...3 2/8=0...2

所得余数为432,反过来之后就是234,4*8^0+3*8+2*8^2=156。

3)十进制转十六进制

规则:将该数不断除16,直到商为0为止,然后将每步得到的余数都倒过来,就是对应的十六进制数。

356(十进制)=164(十六进制)

356/16=22...4 22/16=1...6 1/16=0...1

所的余数反过来之后就是164,4*16^0+6*16+1*16^2=356。

第三组(二进制转其他进制)

1)二进制转八进制

规则:将二进制每三位一组,缺的位补0,转成对应的十进制数,再把这些十进制数组合起来即可

11010101(二进制)=325(八进制)

先把二进制数每三位一组分开,分别是011、010、101,注意,每组所代表的十进制数分别为3、2、5,所以对应的八进制数就是325了

2)二进制转十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十进制数,再看这些十进制数有没有大于9的,如果有,转换为对应的16进制即可

11010101(二进制)=

先把二进制数从低到高每四位一组分开分别是1101、0101,他们代表的十进制数是

13、5,13在十六进制中代表的D,所以这个二进制转换成十六进制就是D5。

第四组(其他进制转二进制)

1)八进制转二进制

将八进制每一位,转换成对应的一个三位的二进制数即可

0237(八进制)=000010011111(二进制)=01001111(二进制)

2)十六进制转二进制

将十六进制每一位,转成对应的一个四位的二进制数即可

0x23B(十六进制)=001000111011(二进制)=1000111011(二进制)

相关推荐
猫猫的小茶馆3 小时前
【STM32】预分频因子(Prescaler)和重装载值(Reload Value)
c语言·stm32·单片机·嵌入式硬件·mcu·51单片机
JeffersonZU3 小时前
Linux/Unix文件IO(文件描述符、原子操作、文件数据结构、open、read、write、fcntl、dup)
linux·c语言·unix·gnu
智者知已应修善业7 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
森焱森16 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
小林C语言19 小时前
C语言 | 判断是否为回文数
c语言
myloveasuka1 天前
信号操作集函数
linux·运维·服务器·c语言·c++·vscode
Mr_Xuhhh1 天前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
双叶83611 天前
(C语言)Map数组的实现(数据结构)(链表)(指针)
c语言·数据结构·c++·算法·链表·哈希算法
不会kao代码的小白11 天前
C指针总结复习(结合deepseek)
c语言
XiaoCCCcCCccCcccC11 天前
C语言数组介绍 -- 一维数组和二维数组的创建、初始化、下标、遍历、存储,C99 变长数组
c语言·数据结构·算法