IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言学习—进制之间相互转换 -> 正文阅读

[C++知识库]C语言学习—进制之间相互转换


一、进制的表示

1.二进制

二进制数据是采用位置计数法,其权位是以2为底的幂。例如二进制数据110,逢2进1,其权重的大小顺序为: x 2 x^2 x2 + x 1 x^1 x1 + x 0 x^0 x0,对其相应的位乘以权重,得到: 1 ? 2 2 1*2^2 1?22+ 1 ? 2 1 1*2^1 1?21+ 0 ? 2 0 0*2^0 0?20=14+12+0*1=6,故二进制110表示十进制的数6。

1.1加法

二级制加法有四种情况:
0 + 0 = 0 0+0=0 0+0=0 0 + 1 = 1 0+1=1 0+1=1 1 + 0 = 1 1+0=1 1+0=1 1 + 1 = 10 1+1=10 1+1=10(0进位为1)

1.2减法

二进制减法有四种情况:
0 ? 0 = 0 0-0=0 0?0=0 1 ? 0 = 1 1-0=1 1?0=1 0 ? 1 = 1 0-1=1 0?1=1 1 ? 1 = 0 1-1=0 1?1=0

1.3乘法

二进制乘法有四种情况:
0 ? 0 = 0 0*0=0 0?0=0 1 ? 0 = 0 1*0=0 1?0=0 0 ? 1 = 0 0*1=0 0?1=0 1 ? 1 = 1 1*1=1 1?1=1

1.4除法

二进制除法有两种情况:(除数只能为1)
0 / 1 = 0 0/1=0 0/1=0 1 ? 1 = 1 1*1=1 1?1=1

1.5实例

两个二进制数1001与0101的算数运算克表示为:
在这里插入图片描述

2.八进制

八进制,Octal,缩写为OCT,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢8进1。特别地,八进制的数和二进制数可以按位对应,也就是说,一个八进制位对应二进制三位。
在C语言中,整数的表达有三种形式:十进制、八进制、十六进制。其中。以数字0开头,由0~ 7组成的数是八进制。以0X或0x开头,由0-9,A~ F或a~ f 组成是十六进制。除表示正负的符号外,以1~ 9开头,由0~9组成是十进制。

3.十进制

十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。要表示这十个数的10倍,就将这些数字左移一位,用0补上空位,即10,20,30,…,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,…。要表示一个数的1/10,就右移这个数的位置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001。
十进制计数法是相对二进制计数法而言的,是我们日常使用最多的计数方法(俗称“逢十进一”),它的定义是:“每相邻的两个计数单位之间的进率都为十”的计数法则,就叫做“十进制计数法”。

4.十六进制

十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字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,这些称作十六进制数字。

【注】注意十六进制的表示,用字母H表示后缀,就比如BH就表示十六进制数11;也可以用0x(或0X)前缀表示,比如0x23就是十六进制数23。

二、进制之间的相互转换

1.二进制转八进制

为了把八进制数转换为二进制,将每一个八进制数字替换成下表中对应的三位二进制:

123
001010011

二进制/八进制换算表

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

为了将一个二进制数换算为八进制,只需将二进制串划分成每三个位一组(不够在前面补0)。举个简单的例子:
在这里插入图片描述
再比如:
在这里插入图片描述

2.二进制转十进制

二进制转为十进制的时候,先把二进制从高位(最左边的“1”)开始按从上到下的顺序写出 ,第一位就是最后的商 “2 / 2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。
下面就是从第一位开始乘以2加余数的方法算回去:
例如 100101110
1…………0 2+1=1……………余数为1
0…………1 2+0=2…………… 余数为0
0 …………2 2+0=4 ……………余数为0
1 …………4x2+1=9……………余数为1
0…………9x2+0=18 ………….余数为0
1 …………18x2+1=37 …………余数为1
1…………37x2+1=75……………余数为1
1…………75x2+1=151………… 余数为1
0…………151x2+0=302 ………… 余0
所以得到十进制数302
另:1x28+0x27+0x26+1x25+0x24+1x23+1x22+1x21+0x20=302

3.二进制转十六进制

二进制与十六进制对应的关系:
在这里插入图片描述
二进制转换成十六进制的方法是:取四合一法,即从二进制的小数点为分界线,向左(或向右)每四位取成一位,如下图所示:
在这里插入图片描述

4.进制之间的相互转换

八进制、十进制、十六进制之间的相互转换均是在二进制的基础上进行转换的。就比如,十进制数111转换成十六进制数,下面是其转换过程:
在这里插入图片描述
类似的,八进制转换十进制,十六进制转换十进制等,均是先转换成二进制,再转换成对应的进制。

三、C语言实现进制之间的转换

要求:输入一个二进制数,将其转换为十进制数;
例如输入二进制数:1001,其对应的十进制数为:9(1x23+0x22+0x21+1x20=9)
输入二进制数:110,其对应的十进制数为:6(1x22 + 1x21 + 0x20=6)

二进制转换为十进制C语言代码如下:

int Bin2Dec(int n)
{
	int decimalNumber = 0, i = 0, remainder;
	while (n != 0)
	{
		remainder = n % 10;
		n /= 10;
		decimalNumber += remainder * pow(2, i);
		++i;
	}
	return decimalNumber;
}
int main()
{
	int n;
	printf("输入一个二进制数: ");
	scanf_s("%d", &n);
	printf("转换为十进制为:%d", Bin2Dec(n));
	return 0;
}

结果如下所示:
在这里插入图片描述


总结

进制之间的相互转换均是以二进制为中介,这样比较直观易懂
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:37:21  更:2021-12-13 12:39:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:22:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码