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.mzph.cn/news/580776.shtml

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

相关文章

uniapp 创建项目

uniapp 是一款基于 Vue 框架的跨平台应用开发框架。 创建 uniapp 项目 一、打开 HbuilderX 编辑器&#xff0c;点击新建项目。 二、选择 uniapp 项目、自定义项目名称、选择默认模板、选择 Vue 版本、点击创建。 三、这样 uniapp 项目就创建完毕啦&#xff01; 运行 uniapp …

安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;同时…

spdlog中的异步日志方案

日志方案 同步日志方案&#xff1a;立即输出日志记录的方案才能继续执行其他任务。 异步日志方案&#xff1a;先抛出一个日志记录的任务到某个地方&#xff0c;不马上执行打印也不影响往下执行其他任务。 二者关键区别是产生日志记录并调用相关的日志任务接口之后&#xff0…

test mock-01-什么是 mock? Mockito/EasyMock/PowerMock/JMockit/Spock mock 框架对比

拓展阅读 test 之 jmockit-01-overview jmockit-01-test 之 jmockit 入门使用案例 mockito-01-overview mockito 简介及入门使用 PowerMock Mock Server ChaosBlade-01-测试混沌工程平台整体介绍 jvm-sandbox 入门简介 单元测试中的 mock 单元测试是一种验证代码单元&…

K8S网络类型

k8s的网络类型 k8s的通信模式 1 pod内部之间容器与容器之间的通信&#xff0c;在同一个pod中容器是共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信 2 同一个node节点之内&#xff0c;不同pod之间的通信&#xff0c;每个pod都有一个全局的真实ip地…

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

作者&#xff1a;lesleyfootprint.network 数据源&#xff1a;Token Sector Dashboard ChatGPT 的热潮点燃了 AI 领域&#xff0c;AI 与区块链技术的融合成为市场关注的焦点。因为区块链的一个显著特征是它能够在链上安全地存储大量数据&#xff0c;这与 AI 模型对数据的密集…

mysql面试题:索引(B+树、聚集索引、二级索引、回表查询、覆盖索引、超大分页查询、索引创建原则)

索引 概念 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构**&#xff08;B树&#xff09;**&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&am…

安装虚拟机在虚拟机里面安装WindowsServer2012与步骤

目录 一、VMware介绍 1.1、概念讲解 1.2、VMware虚拟机的安装讲解 1.3、具体操作步骤 二、虚拟机安装WindowsServer2012演示 2.1、在虚拟机里配置具体步骤 (相当于制作启动U盘) 2.2、安装windows server2012步骤演示 三、Windows Server2012激活步骤演示 四、思维导…

golang并发安全-sync.map

sync.map解决的问题 golang 原生map是存在并发读写的问题&#xff0c;在并发读写时候会抛出异常 func main() {mT : make(map[int]int)g1 : []int{1, 2, 3, 4, 5, 6}g2 : []int{4, 5, 6, 7, 8, 9}go func() {for i : range g1 {mT[i] i}}()go func() {for i : range g2 {mT[…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 &#x1f354;发放优惠券&#x1f386;基本操作&#x1f384;数据库表&#x1f6f8;思路&#x1f339;代码实现 &#x1f386;完善后的操作&#x1f6f8;乐观锁&#x1f339;代码实现 &#x1f354;一人仅一张优惠券&#x1f6f8;思路&#x1f339;代码⭐代码分析 &am…

git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

文章目录 前言&#xff1a;新建远程仓库克隆推送【push】拉取【pull】 配置git忽略特殊文件给命令配置别名 标签管理理解标签创建标签操作标签 前言&#xff1a; 大家如果没有看过前几章git的基础操作的话&#xff0c;推荐先看一下&#xff0c;看完再来看这个远程操作&#xf…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结&#xff1a; 《2022年总结&#xff1a;道阻且长&#xff0c;行则将至》 《2021年总结&#xff1a;前路有光&#xff0c;初心莫忘》 《2020年总结&#xff0c;所有努力只为一份期待》 《2019年总结&#xff0c;平凡的我仍在平凡的生活》 现在…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 数据集合并缓存如何控制对象样式

作者&#xff1a;taco 最近在支持的过程中&#xff0c;遇到了一个新问题&#xff01;之前研究功能的时候竟然没有想到。通常我们控制单个对象的显隐、颜色、偏移的参数都是根据对象所在的图层以及对象单独的id来算的。那么问题来了&#xff0c;合并后的图层。他怎么控制单个对象…

面试官:SpringBoot项目中,要如何1秒实现异步接口?

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…

STM32逆变器方案

输入电压&#xff1a; 额定输入电压&#xff1a;DC110V 输入电压范围&#xff1a;DC77-137.5V 额定输出参数 电压&#xff1a;200V5%&#xff08;200VAC~240VAC 可调&#xff09; 频率&#xff1a; 42Hz0.5Hz&#xff08;35-50 可调&#xff09; 额定输出容量&#xff1a;1…

关于“Python”的核心知识点整理大全45

目录 15.4.6 绘制直方图 die_visual.py 注意 15.4.7 同时掷两个骰子 dice_visual.py 15.4.8 同时掷两个面数不同的骰子 different_dice.py 15.5 小结 第 16 章 16.1 CSV 文件格式 16.1.1 分析 CSV 文件头 highs_lows.py 注意 16.1.2 打印文件头及其位置 highs_l…

适合穷人创业项目低成本生意,2024热门创业项目

回收生意&#xff0c;一个月赚20万&#xff1f;别不信&#xff01; 我们两个人靠回收倒闭的酒店和KTV的店内物品&#xff0c;一个月赚了20多万。大件就是家具家电、厨房设备、点唱机&#xff0c;小件就是床品、餐具&#xff0c;只要能卖钱的都收。 卖给谁呢&#xff1f;大部分…

office bookmarks

Word2007Util.java-CSDN博客

webstorm中直接运行ts(TypeScript)

参考&#xff1a;https://www.cnblogs.com/yangfanjie/p/12036118.html 1&#xff1a;安装ts: npm install -g typescript 2&#xff1a;安装直接运行所需依赖包&#xff1a; npm install -g ts-node 3&#xff1a;在设置中安装安装插件后重启 4&#xff1a;重启后就会发现在…