C语言之进制转换

C语言之进制转换

  • 一、引言
  • 二、十进制与二进制、八进制、十六进制
  • 三、二进制与八进制、十六进制
  • 四、八进制与十六进制

一、引言

在C语言中,经常使用的整数的进制有十进制、二进制、十六进制(在C语言中以0x或0X为前缀)、八进制(在C语言中以0为前缀),计算机内部使用的是二进制进行编码和存储,而其他三种进制可供程序员选择,在讲述它们之间的转换规则之前,先介绍一下这几种进制的基本概念是有必要的

  • 什么是进制?进位计数制,人为定义的一种计数方法,使用进位计数法,可以用有限的数字符号代表所有的数值,可使用数字符号的数目称为基数(radix)或底数,基数为n,即可称n进位制,简称n进制。
  • 什么是位权?对于多位数,处在某一位上的“1”所表示数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于 N进制数,整数部分第 i位(从0开始,从右往左数,0,1,2…)的位权为N^ i , 而小数部分第j位(从-1开始,从左往右数, -1,-2…)的位权为N^(-j)。数码(某一位的数字符号)所表示的数值等于该数码本身乘以它所在数位的位权。
  • 十进制(dec):基数为10,逢十进一,数码由0-9的10个数字组成
  • 二进制(bin):基数为2,逢二进一,数码由0和1两个数字组成
  • 八进制(oct):基数为8,逢八进一,数码由0-7的8个数字组成
  • 十六进制(hex):基数为16,逢十六进一,数码由0-9和A-F的16个数字和字母组成

对于任何一个数,我们可以用不同的进制来表示,下面所有的例子都以十进制数 57 举例,如下的程序打印出了十进制数57的不同进制的数值,可用于后续转换结果的查验

#include <stdio.h>int main()
{int d = 57;char b[32];itoa(d, b, 2); // 库函数,整数转换二进制printf("二进制:%s\n十进制:%d\n八进制:%o\n十六进制:%x\n", b, d, d, d);printf("带前缀显示八进制和十六进制:\n");// %#o %#x 带前缀显示八进制和十六进制printf("二进制:%s\n十进制:%d\n八进制:%#o\n十六进制:%#x\n", b, d, d, d);return 0;
}
运行结果:
二进制:111001
十进制:57
八进制:71
十六进制:39
带前缀显示八进制和十六进制:
二进制:111001
十进制:57
八进制:071
十六进制:0x39

二、十进制与二进制、八进制、十六进制

  • 十进制转二进制、八进制、十六进制:除2取余法;除8取余法;除16取余法
    在这里插入图片描述

  • 二进制、八进制、十六进制转十进制:按权求和,即将所有数位的数码乘以该位的位权依次相加,比如

(111001)2 = 1*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = (57)10
(71)8 = 7*8^1 + 1*8^0 = (57)10
(39)16 = 3*16^1 + 9*16^0 = (57)10

三、二进制与八进制、十六进制

二进制与八进制、十六进制转换比较方便,因为8和16都是2的幂次方数,八进制的每一位可以用3位二进制表示,十六进制的每一位可以用4位二进制表示

  • 二进制转八进制、十六进制
(111001)2 = 111 001 = (71)8
(111001)2 =  0011 1001 = (39)16
  • 八进制、十六进制转二进制
(71)8 = 111 001 = (111001)2
(39)16 =  0011 1001 = (111001)2

四、八进制与十六进制

  • 八进制与十六进制的转换:可以先将源进制转为二进制或十进制,再由二进制或十进制转为目标进制
// 八进制转十六进制,先将八进制转二进制,再将二进制转十六进制
(71)8 = 111 001 = (111001)2 = 0011 1001 = (39)16
// 十六进制转八进制,先将十六进制转二进制,再将二进制转八进制
(39)16 =  0011 1001 = (111001)2 = 111 001 = (71)8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226373.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何手动升级Chrome插件/Chrome扩展程序?

Chrome 浏览器的插件&#xff08;也称为扩展&#xff09;通常会自动更新到最新版本。这是因为 Chrome 会定期检查并下载来自 Chrome 网上应用店的扩展更新。然而&#xff0c;如果你需要手动更新扩展&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Chrome 浏览器。点击浏览…

Three.js基础入门介绍——Three.js学习三【借助控制器操作相机】

在Three.js基础入门介绍——Three.js学习二【极简入门】中介绍了如何搭建Three.js开发环境并实现一个包含旋转立方体的场景示例&#xff0c;以此为前提&#xff0c;本篇将引进一个控制器的概念并使用”轨道控制器”&#xff08;OrbitControls&#xff09;来达到从不同方向展示场…

Flink项目实战篇 基于Flink的城市交通监控平台(上)

系列文章目录 Flink项目实战篇 基于Flink的城市交通监控平台&#xff08;上&#xff09; Flink项目实战篇 基于Flink的城市交通监控平台&#xff08;下&#xff09; 文章目录 系列文章目录1. 项目整体介绍1.1 项目架构1.2 项目数据流1.3 项目主要模块 2. 项目数据字典2.1 卡口…

车路协同中 CUDA 鱼眼相机矫正、检测、追踪

在车路协同中,鱼眼一般用来补充杆件下方的盲区,需要实现目标检测、追踪、定位。在目标追踪任务中,通常的球机或者枪机方案,无法避免人群遮挡的问题,从而导致较高的ID Swich,造成追踪不稳定。但是鱼眼相机的顶视角安装方式,天然缓解了遮挡的问题,从而实现杆件下方的盲区…

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器&#xff08;PxM0&#xff0c;PxM1&#xff09;端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制&#xff08;I/O输出&#xff09;按键检测&#xff08;I/O输入&#xff09; S…

SpringBoot多线程与任务调度总结

一、前言 多线程与任务调度是java开发中必须掌握的技能&#xff0c;在springBoot的开发中&#xff0c;多线程和任务调度变得越来越简单。实现方式可以通过实现ApplicationRunner接口&#xff0c;重新run的方法实现多线程。任务调度则可以使用Scheduled注解 二、使用示例 Slf…

vue3中使用defineComponent封装hook实现模板复用

文章目录 一、前言二、useTemplate 实现三、最后 一、前言 最近在做 Vue3 项目的时候&#xff0c;在思考一个小问题&#xff0c;其实是每个人都做过的一个场景&#xff0c;很简单&#xff0c;看下方代码 <template><div><div v-for"item in data" :…

Eclipse安装Jrebel eclipse免重启加载项目

每次修改JAVA文件都需要重新启动项目&#xff0c;加载时间太长&#xff0c;eclipse安装jrebel控件,避免重启项目节省时间。 1、Help->Eclipse Marketplace 2、搜索jrebel 3、Help->jrebel->Configuration 配置jrebel 4、激活jrebel 5、在红色框中填入 http://jrebel…

HCIA-Datacom题库(自己整理分类的)——OSPF协议判断

1.路由表中某条路由信息的Proto为OSPF则此路由的优先级一定为10。√ 2.如果网络管理员没有配置骨干区域,则路由器会自动创建骨干区域&#xff1f; 路由表中某条路由信息的Proto为OSPF&#xff0c;则此路由的优先级一定为10。 当两台OSPF路由器形成2-WAY邻居关系时&#xff0…

python-39-flask+nginx+Gunicorn的组合应用

flask nginx Gunicorn 王炸 1 flasknginxgunicornsupervisor 1.1 myapp.py from flask import Flask app Flask(__name__)app.route("/") def test_link():return "the link is very good"if __name__"__main__":app.run()默认是5000端口…

Java开发框架和中间件面试题(10)

目录 104.怎么保证缓存和数据库数据的一致性&#xff1f; 105.什么是缓存穿透&#xff0c;什么是缓存雪崩&#xff1f;怎么解决&#xff1f; 106.如何对数据库进行优化&#xff1f; 107.使用索引时有哪些原则&#xff1f; 108.存储过程如何进行优化&#xff1f; 109.说说…

听GPT 讲Rust源代码--src/tools(29)

File: rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs 在Rust源代码中&#xff0c;rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs这个文件是Clippy工具中一个特定的Lint规则的实现文件&#xff0c;用于检测未使用的Peekable迭代器。 Peekable迭代器…

[BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务

1.问题描述 使用yarn调度任务时&#xff0c;在CapacityScheduler页面上单击叶队列&#xff08;或子队列&#xff09;时&#xff0c;不会显示应用程序任务信息&#xff0c;root队列可以显示任务。此外&#xff0c;FairScheduler页面是正常的。 No matching records found2.原…

Unreal Engine游戏引擎的优势

在现在这个繁荣的游戏开发行业中&#xff0c;选择合适的游戏引擎是非常重要的。其中&#xff0c;Unreal Engine作为一款功能强大的游戏引擎&#xff0c;在业界广受赞誉。那Unreal Engine游戏引擎究竟有哪些优势&#xff0c;带大家简单的了解一下。 图形渲染技术 Unreal Engin…

【计算机网络实验】educoder实验八 IPV6网络及其路由 头歌

第一关 IPV6网络基础 //千万不要破坏文档原有结构与内容&#xff01;&#xff01;&#xff01; //以下均为判断题&#xff0c;F&#xff1a;表示错误&#xff0c;T&#xff1a;表示正确 //答案必须写在相应行末尾括号内&#xff0c;F与T二选一&#xff0c;大写 // 1、ipv6协议…

Flink1.17实战教程(第七篇:Flink SQL)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

Azure 学习总结

文章目录 1. Azure Function1.1 Azure Function 概念1.2 Azure Function 实现原理1.3 Azure Function 本地调试1.4 Azure Function 云部署 2. Azure API Managment 概念 以及使用2.1 Azure API 概念2.2 Azure API 基本使用 3. Service Bus 应用场景及相关特性3.1 Service Bus 基…

django之drf框架(排序、过滤、分页、异常处理)

排序 排序的快速使用 1.必须是继承GenericAPIView及其子类才能是用排序 导入OrderingFilter类&#xff0c;from rest_framework.filters import OrderingFilter 2.在类中配置类属性 filter_backends[OrderingFilter] 3.类中写属性 ordering_fields [price,id] # 必须是表的…

【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields

OpenPose&#xff1a;使用PAF的实时多人2D姿势估计。 code&#xff1a;GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR17 (Oral) paper&#xff1a;[1611.08050] Realtime Multi-Person 2D Pose Estima…

Docker安装Grafana

1. 介绍 Grafana 是一个开源的度量分析和可视化工具&#xff0c;可以通过将采集的数据分析、查询&#xff0c;然后进行可视化的展示&#xff0c;并能实现报警。参考官网地址&#xff1a;Run Grafana Docker image | Grafana documentation 2. 安装Grafana (1) . 下载 命令&…