C语言对n进制的处理

news2025/4/23 20:59:05

先看一道题目:

从键盘获取一个正整数,如果把它转为16进制的数字,那么它是一个几位数呢?如果把它转为28进制又是一个几位数呢?

在讲这个题目之前,我们先要了解进制转换

什么是进制转换?
简单来说,进制就是数位的表示方法。

十进制(常用)是每逢10进1。

二进制是每逢2进1。

八进制是每逢8进1。

十六进制是每逢16进1。

而进制转换,就是把一个数从一种进制换到另一种进制表示。

比如:

十进制 10 转成二进制 = 1010

十进制 10 转成八进制 = 12

十进制 10 转成十六进制 = A

虽然数字代表的大小不变,但写法变了!

怎么进行进制转换?(超简单版)

1. 十进制 → 其他进制
方法:不断除目标进制,记录余数,最后倒着读。

比如:

十进制123转成8进制

123 ÷ 8 = 15 余 3

15 ÷ 8 = 1 余 7

1 ÷ 8 = 0 余 1

余数倒着读:1 7 3 → 八进制是173

2. 其他进制 → 十进制
方法:按照位数乘以进制的幂次方,加起来。

比如:

八进制173转回十进制

= 1×8² + 7×8¹ + 3×8⁰  //1在百位所以是平方,7在十位所以是1次方,类比十进制

= 1×64 + 7×8 + 3×1

= 64 + 56 + 3

= 123

这道题目求进制转化后的数字的位数,其实就是求进制转化过程中除的次数!

现在直接给出这道题目的代码:

int Fun1(int x,int n)//统计x转为n进制是个几位数
{
	int count = 0;//计数器
	while (x != 0)
	{
		x /= n;
		count++;
	}
	return count;
}

int main()
{
	printf("%d\n", Fun1(123, 10));//3
	printf("%d\n", Fun1(123, 16));//2
	printf("%d\n", Fun1(123, 8));//3
	printf("%d\n", Fun1(123, 2));//7
	printf("%d\n", Fun1(123, 28));

	return 0;
}

首先,看看函数 Fun1:

int Fun1(int x,int n)//统计x转为n进制是个几位数
{
	int count = 0;//计数器
	while (x != 0)
	{
		x /= n;
		count++;
	}
	return count;
}

简单理解就是:

把数字 x 按 n 进制去表示,看看一共需要多少位。

每次 x /= n,就相当于“去掉”一位。

直到 x 变成0,统计了一共去过几次,就是它的位数。

再看 main 函数:

int main()
{
	printf("%d\n", Fun1(123, 10));//3
	printf("%d\n", Fun1(123, 16));//2
	printf("%d\n", Fun1(123, 8));//3
	printf("%d\n", Fun1(123, 2));//7
	printf("%d\n", Fun1(123, 28));

	return 0;
}

逐行解释一下输出:

Fun1(123, 10):

123是十进制本身。

123 / 10 = 12

12 / 10 = 1

1 / 10 = 0 (结束)

总共除过3次,所以是3位。

Fun1(123, 16):

123转16进制是 7B。

123 / 16 = 7

7 / 16 = 0

两次,所以是2位。

Fun1(123, 8):

123转8进制是173。

123 / 8 = 15

15 / 8 = 1

1 / 8 = 0

三次,所以是3位。

Fun1(123, 2):

123转二进制是1111011。

123 / 2 = 61

61 / 2 = 30

30 / 2 = 15

15 / 2 = 7

7 / 2 = 3

3 / 2 = 1

1 / 2 = 0

七次,所以是7位。

Fun1(123, 28):

123 / 28 = 4

4 / 28 = 0

两次,所以是2位。

图示:以Fun1(123,8)为例

(也就是求123在8进制下是几位)

我们做的是不断除以8,来"去掉"低位:

(这道题目求进制转化后的数字的位数,其实就是求进制转化过程中除的次数!)

总结一句话:

Fun1(x, n) 实际上是 x在n进制下所需要的位数,
原理是每次除以n,把最低位"丢掉",直到剩0,统计除的次数。

再看一题:

假设在n进制下,下面的等式成立,567*456=150216,n的值是()。
A. 9 B. 10 C. 12 D.18

 

int main()
{
	for (int n = 9; n <= 18; n++)//进制
	{
		if ((5 * n * n + 6 * n + 7) * (4 * n * n + 5 * n + 6) ==
			((int)pow(n, 5) + 5 * (int)pow(n, 4) + 2 * n * n + n+6))
		{
			printf("%d\n",n);
			break;
		}
	}
	//int n = (int)pow(10,5);//(int):把后面的double强制转换为int
	//printf("%d\n",n);

	return 0;
}

逐步解释:

for (int n = 9; n <= 18; n++)

n从9开始,每次循环n++,直到n=18。

每次都检查一个条件,想找一个满足特定数学关系的n。

if ((5 * n * n + 6 * n + 7) * (4 * n * n + 5 * n + 6) ==
			((int)pow(n, 5) + 5 * (int)pow(n, 4) + 2 * n * n + n+6))

判断式的左边:

(5n² + 6n + 7) * (4n² + 5n + 6) 

判断式的右边:

n⁵ + 5n⁴ + 2n² + n + 6 

(注意:pow(n, 5)和pow(n, 4)是计算n的5次方、4次方,因为pow返回double类型,所以用(int)强制类型转换成整数。)

如果左边和右边的结果相等:

printf("%d\n", n); 输出这个n

break; 退出循环(因为已经找到了)。

整体意思总结:

在n从9到18的范围里,找一个n,使得 (5n² + 6n + 7)*(4n² + 5n + 6) 等于 n⁵ + 5n⁴ + 2n² + n + 6,并输出这个n。

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

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

相关文章

Ubuntu数据连接访问崩溃问题

目录 一、分析问题 1、崩溃问题本地调试gdb调试&#xff1a; 二、解决问题 1. 停止 MySQL 服务 2. 卸载 MySQL 相关包 3. 删除 MySQL 数据目录 4. 清理依赖和缓存 5.重新安装mysql数据库 6.创建程序需要的数据库 三、验证 1、动态库更新了 2、头文件更新了 3、重新…

Spark-Streaming简介和核心编程

Spark-Streaming简介 概述&#xff1a;用于流式数据处理&#xff0c;支持Kafka、Flume等多种数据输入源&#xff0c;可使用Spark原语运算&#xff0c;结果能保存到HDFS、数据库等。它以DStream&#xff08;离散化流&#xff09;为抽象表示&#xff0c;是RDD在实时场景的封装&am…

Docker 快速入门教程

1. Docker 基本概念 镜像(Image): 只读模板&#xff0c;包含创建容器的指令 容器(Container): 镜像的运行实例 Dockerfile: 用于构建镜像的文本文件 仓库(Repository): 存放镜像的地方&#xff08;如Docker Hub&#xff09; 2. 安装Docker 根据你的操作系统选择安装方式:…

【锂电池SOH估计】BP神经网络锂电池健康状态估计,锂电池SOH估计(Matlab完整源码和数据)

目录 效果一览程序获取程序内容研究内容基于BP神经网络的锂电池健康状态估计研究摘要关键词1. 引言1.1 研究背景1.2 研究意义1.3 研究目标2. 文献综述2.1 锂电池SOH估计理论基础2.2 传统SOH估计方法2.3 基于BP神经网络的SOH估计研究进展2.4 研究空白与创新点3. BP神经网络原理3…

Python常用的第三方模块之二【openpyxl库】读写Excel文件

openpyxl库模块是用于处理Microsoft Excel文件的第三方库&#xff0c;可以对Excel文件中的数据进行写入和读取。 weather.pyimport reimport requests#定义函数 def get_html():urlhttps://www.weather.com.cn/weather1d/101210101.shtml #爬虫打开浏览器上的网页resprequests.…

成熟软件项目解决方案:360°全景影像显控软件系统

​若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/147425300 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、Open…

前端开发核心知识详解:Vue2、JavaScript 与 CSS

一、Vue2 核心知识点 1. Vue2 的双向绑定原理 Vue2 实现双向绑定主要依赖数据劫持与发布 - 订阅者模式。 利用Object.defineProperty方法对数据对象的属性进行劫持&#xff0c;为每个属性定义getter和setter。getter用于收集依赖&#xff0c;当视图中使用到该属性时&#xf…

JDK安装超详细步骤

&#x1f525;【JDK安装超详细步骤】 文章目录 &#x1f525;【JDK安装超详细步骤】1. 卸载系统自带的旧版JDK2. 安装JDK113. 验证安装是否成功4. 常见问题4.1 执行java -version提示命令未找到&#xff1f; 1. 卸载系统自带的旧版JDK 查询已安装的OpenJDK包。 rpm -qa | gre…

39.剖析无处不在的数据结构

数据结构是计算机中组织和存储数据的特定方式&#xff0c;它的目的是方便且高效地对数据进行访问和修改。数据结构表述了数据之间的关系&#xff0c;以及操作数据的一系列方法。数据又是程序的基本单元&#xff0c;因此无论是哪种语言、哪种领域&#xff0c;都离不开数据结构&a…

在离线 Ubuntu 环境下部署双 Neo4j 实例(Prod Dev)

在许多开发和生产场景中&#xff0c;我们可能需要在同一台服务器上运行多个独立的 Neo4j 数据库实例&#xff0c;例如一个用于生产环境 (Prod)&#xff0c;一个用于开发测试环境 (Dev)。本文将详细介绍如何在 离线 的 Ubuntu 服务器上&#xff0c;使用 tar.gz 包部署两个 Neo4j…

第十五届蓝桥杯 2024 C/C++组 下一次相遇

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 自己的思路详解&#xff1a; 更好的思路详解&#xff1a; 代码&#xff1a; 自己的思路代码详解&#xff1a; 更好的思路代码详解&#xff1a; 题目&#xff1a; 题目描述&#xf…

【2】CICD持续集成-k8s集群中安装Jenkins

一、背景&#xff1a; Jenkins是一款开源 CI&CD 系统&#xff0c;用于自动化各种任务&#xff0c;包括构建、测试和部署。 Jenkins官方提供了镜像&#xff1a;https://hub.docker.com/r/jenkins/jenkins 使用Deployment来部署这个镜像&#xff0c;会暴露两个端口&#xff…

IDEA 创建Maven 工程(图文)

设置Maven 仓库 打开IDEA 开发工具&#xff0c;我的版本是2024.3.1&#xff08;每个版本的位置不一样&#xff09;。在【Customize】选项中&#xff0c;可以直接设置【语言】&#xff0c;在最下面选择【All setting】。 进入到熟悉的配置界面&#xff0c;选择配置的【setting…

通过C# 将Excel表格转换为图片(JPG/ PNG)

Excel 表格可能会因为不同设备、不同软件版本或字体缺失等问题&#xff0c;导致格式错乱或数据显示异常。转换为图片后&#xff0c;能确保数据的排版、格式和外观始终保持一致&#xff0c;无论在何种设备或平台上查看&#xff0c;都能呈现出固定的样式&#xff0c;避免了因环境…

国产紫光同创FPGA实现SDI视频编解码+图像缩放,基于HSSTHP高速接口,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目本博已有的 SDI 编解码方案本方案在Xilinx--Artix7系列FPGA上的应用本方案在Xilinx--Kintex系列FPGA上的应用本方案在Xilinx--Zynq系列FPGA上的应用本方案在Xilinx--U…

自动驾驶安全模型研究

自动驾驶安全模型研究 自动驾驶安全模型研究 自动驾驶安全模型研究1.自动驾驶安全模型概述2. 自动驾驶安全模型应用3. 自动驾驶安全模型介绍3.1 Last Point to Steer3.2 Safety Zone3.3 RSS (Responsibility-Sensitive Safety)3.4 SFF (Safety Force Field)3.5 FSM (Fuzzy Safe…

【项目】基于MCP+Tabelstore架构实现知识库答疑系统

基于MCPTabelstore架构实现知识库答疑系统 整体流程设计&#xff08;一&#xff09;Agent 架构&#xff08;二&#xff09;知识库存储&#xff08;1&#xff09;向量数据库Tablestore&#xff08;2&#xff09;MCP Server &#xff08;三&#xff09;知识库构建&#xff08;1&a…

当OCR遇上“幻觉”:如何让AI更靠谱地“看懂”文字?

在数字化的世界里&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术就像给机器装上了“电子眼”。但当这项技术遇上大语言模型&#xff0c;一个意想不到的问题出现了——AI竟然会像人类一样产生“幻觉”。想象一下&#xff0c;当你拿着模糊的财务报表扫描件时&#xff…

Docker用model.config部署及更新多个模型

步骤&#xff1a; 1、本地打包模型 2、编写model.config文件 3、使用 Docker 启动一个 TensorFlow Serving 容器 4、本地打包后的模型修改后&#xff0c;修改本地model.config&#xff0c;再同步更新容器的model.config 1、本地打包模型&#xff08;本地路径&#xff09; 2、…

Linux kernel signal原理(下)- aarch64架构sigreturn流程

一、前言 在上篇中写到了linux中signal的处理流程&#xff0c;在do_signal信号处理的流程最后&#xff0c;会通过sigreturn再次回到线程现场&#xff0c;上篇文章中介绍了在X86_64架构下的实现&#xff0c;本篇中介绍下在aarch64架构下的实现原理。 二、sigaction系统调用 #i…