CSP-J基础之进制转换

文章目录

  • 前言
  • 数制
    • 1. **二进制 (Binary)**
    • 2. **八进制 (Octal)**
    • 3. **十进制 (Decimal)**
    • 4. **十六进制 (Hexadecimal)**
  • K进制转十进制
      • 例子 1:以二进制(K = 2)为基数
      • 例子 2:以八进制(K = 8)为基数
      • 例子 3:以十六进制(K = 16)为基数
  • 十进制转K进制
    • 整数部分
        • 详细图示
    • 小数部分
      • 十进制小数转K进制
  • 总结


在编程和计算机科学中,进制转换是一个基础而重要的概念。进制系统用于表示数值的不同方式,每种进制都有其特定的应用场景。对于编程竞赛中的问题,理解并掌握进制转换可以帮助我们解决许多复杂的计算和算法问题。本文将介绍进制转换的基础知识,包括常见的进制系统及其转换方法,为备战CSP-J(Certified Software Professional Junior)等信息学竞赛提供必要的理论基础。

前言

在计算机科学中,数字可以以不同的进制系统表示。最常见的进制系统包括二进制(base-2)、八进制(base-8)、十进制(base-10)和十六进制(base-16)。每种进制系统都有其独特的符号和表示方式:

  • 二进制:使用0和1两个符号。
  • 八进制:使用0至7的数字。
  • 十进制:使用0至9的数字,是我们日常生活中最常用的进制。
  • 十六进制:使用0至9和A至F(其中A=10, B=11, …, F=15)的数字和字母。

在信息学竞赛中,我们常常需要在这些进制之间进行转换。掌握这些基本的转换技巧不仅能帮助我们解决竞赛题目,还能提高我们对数字表示和存储的理解。


数制

在计算机科学中,理解不同的数制及其规则是基础而重要的知识。数制系统用于表示数字的不同方式,每种系统都有其特定的应用场景和计算规则。本文将介绍计算机中常用的几种数制及其规则,包括二进制、八进制、十进制和十六进制。

1. 二进制 (Binary)

基础:二进制是以2为底的数字系统,仅使用两个符号:0 和 1。

规则

  • 位 (Bit):二进制数的基本单位是位(bit),每一位可以是0或1。
  • 表示方法:二进制数表示的是一个由0和1组成的序列,用于计算机内部的数据表示和处理。

应用:所有计算机内部的运算和数据存储都使用二进制格式,因为计算机的基本操作单元是开关(0和1)。

2. 八进制 (Octal)

基础:八进制是以8为底的数字系统,使用的符号是0至7。

规则

  • 位 (Octet):八进制数的基本单位是位,每一位可以是0到7之间的数字。
  • 表示方法:八进制数是由0到7的数字组成的序列。它通常用于简化大二进制数的表示。

应用:八进制在计算机编程中有时用于简化二进制数据的表示,但现代计算机系统中使用的较少。

3. 十进制 (Decimal)

基础:十进制是以10为底的数字系统,使用的符号是0至9。

规则

  • 位 (Digit):十进制数的基本单位是位,每一位可以是0到9之间的数字。
  • 表示方法:十进制数是由0到9的数字组成的序列,是我们日常生活中最常用的数制。

应用:十进制是最常用的数制,我们在日常生活中的所有数学计算和记录基本上都使用十进制。

4. 十六进制 (Hexadecimal)

基础:十六进制是以16为底的数字系统,使用的符号是0至9和A至F(其中A=10, B=11, …, F=15)。

规则

  • 位 (Hex Digit):十六进制数的基本单位是位,每一位可以是0到9或A到F之间的符号。
  • 表示方法:十六进制数是由0到9和A到F的字符组成的序列,用于简化二进制数据的表示。

应用:十六进制广泛用于计算机编程,尤其是在表示内存地址和颜色编码时。它比二进制更紧凑,易于阅读和处理。

不同的数制系统在计算机科学中具有不同的用途和应用场景。二进制是计算机内部使用的基本数制,八进制在某些情况下用于简化二进制数据的表示,十进制是我们日常生活中最常用的数制,而十六进制则用于简化大规模二进制数据的表示。理解这些数制及其规则,可以帮助我们更好地进行数据处理、编程和计算。希望通过本文的介绍,你能对计算机中的数制有更深入的了解,并能够在实际应用中灵活运用这些知识。

K进制转十进制

对于K进制转换十进制,我们使用的方法为按权相加法展开成一个多项式
公式:abcd.efg(K) = d * K^0 + c * K^1 + b * K^2 + a * K^3 + e*K^-1 + f*K^-2 + g*K^-3

公式 abcd.efg(K) = d * K^0 + c * K^1 + b * K^2 + a * K^3 + e*K^-1 + f*K^-2 + g*K^-3 表示了一个以 K 为基数的数的表示方法,其中 abcd 是整数部分,efg 是小数部分。通过这个公式,我们可以将一个基于 K 的数转换为十进制数。下面是几个具体的例子:

例子 1:以二进制(K = 2)为基数

假设我们有一个二进制数 1101.101,我们希望将其转换为十进制数。

  1. 整数部分 1101
    在这里插入图片描述

  2. 小数部分 .101
    在这里插入图片描述

  3. 总和
    在这里插入图片描述

所以,1101.101(二进制)等于 13.625(十进制)。

例子 2:以八进制(K = 8)为基数

假设我们有一个八进制数 547.64,我们希望将其转换为十进制数。

  1. 整数部分 547
    在这里插入图片描述

  2. 小数部分 .64
    在这里插入图片描述

  3. 总和
    在这里插入图片描述

所以,547.64(八进制)等于 359.8125(十进制)。

例子 3:以十六进制(K = 16)为基数

假设我们有一个十六进制数 1A3.4B,我们希望将其转换为十进制数。

  1. 整数部分 1A3
    在这里插入图片描述

  2. 小数部分 .4B
    在这里插入图片描述

  3. 总和
    在这里插入图片描述

所以,1A3.4B(十六进制)等于 419.29296875(十进制)。

通过这些例子,我们可以看到如何将不同进制的数值转换为十进制,从而更好地理解和处理各种数字表示方式。

十进制转K进制

整数部分

十进制整数部分转K进制使用的是倒除法:
当然,我们可以详细地说明如何将一个十进制整数转换为二进制(K = 2)使用倒除法。这里以十进制数 25 为例进行说明。

十进制数 25 转换为二进制

步骤

  1. 步骤1:将 25 除以 2,记录商和余数。
  2. 步骤2:将商继续除以 2,记录新的商和余数。
  3. 步骤3:重复上述步骤直到商为零。
  4. 步骤4:余数的倒序就是目标二进制数。
详细图示
  1. 初始值:25

    • 除数(基数)2
    • 商 = 25 ÷ 2 = 12
    • 余数 = 25 % 2 = 1

    图示

        25
    ------2 | 25----12 余数 1
    
  2. 更新值:商 12

    • 除数(基数)2
    • 商 = 12 ÷ 2 = 6
    • 余数 = 12 % 2 = 0

    图示

         12
    ------2 | 12----6  余数 0
    
  3. 更新值:商 6

    • 除数(基数)2
    • 商 = 6 ÷ 2 = 3
    • 余数 = 6 % 2 = 0

    图示

          6
    ------2 | 6----3  余数 0
    
  4. 更新值:商 3

    • 除数(基数)2
    • 商 = 3 ÷ 2 = 1
    • 余数 = 3 % 2 = 1

    图示

          3
    ------2 | 3----1  余数 1
    
  5. 更新值:商 1

    • 除数(基数)2
    • 商 = 1 ÷ 2 = 0
    • 余数 = 1 % 2 = 1

    图示

          1
    ------2 | 1----0  余数 1
    
  6. 结果:将余数从最后到第一个排列,得到二进制数 11001

    完整图示

        25
    ------2 | 25----12 余数 112
    ------2 | 12----6  余数 06
    ------2 | 6----3  余数 03
    ------2 | 3----1  余数 11
    ------2 | 1----0  余数 1
    

    结果:11001(二进制)

小数部分

十进制小数转K进制方法是取整法,即是小数部分循环乘以K直到0:

十进制小数转K进制

方法:将十进制小数转换为K进制的过程称为取整法(Multiplying by Base)。该方法通过将小数部分不断乘以基数 K,并记录每次乘积的整数部分,直到小数部分为零或者达到足够的精度为止。

例子 1:将十进制小数 0.625 转换为二进制(K = 2)
图示

    0.625 × 2 = 1.25  -> 整数部分 1, 小数部分 0.250.25 × 2 = 0.5    -> 整数部分 0, 小数部分 0.50.5 × 2 = 1.0     -> 整数部分 1, 小数部分 0.0

结果:0.625(十进制)等于 0.101(二进制)。

例子 2:将十进制小数 0.7 转换为八进制(K = 8)

  1. 结果:将记录的整数部分从上到下排列得到八进制小数部分 0.5463(注意,这里小数部分进入了循环)。

    图示

        0.7 × 8 = 5.6   -> 整数部分 5, 小数部分 0.60.6 × 8 = 4.8   -> 整数部分 4, 小数部分 0.80.8 × 8 = 6.4   -> 整数部分 6, 小数部分 0.40.4 × 8 = 3.2   -> 整数部分 3, 小数部分 0.20.2 × 8 = 1.6   -> 整数部分 1, 小数部分 0.6 (开始循环)
    

    结果:0.7(十进制)等于 0.5463(八进制),其中小数部分 0.6 进入了循环。

简单来说就是先乘以对应的K进制,然后用得到的数的小数部分再次乘以K进制(当小数部分不为0时)。当小数部分为0直接得到结果


总结

进制转换是计算机科学和编程中的基本技能,尤其在编程竞赛中具有重要的应用。通过理解和掌握不同进制系统的表示方式,我们可以更加灵活地处理各种数字表示和转换问题。无论是在进行数据处理、算法设计,还是在解决实际问题时,掌握进制转换的知识都能显著提高我们的解决能力和效率。希望本文提供的基础知识能为你在CSP-J竞赛中的进制相关题目提供帮助。

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

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

相关文章

scRNA-data中的R值

愿武艺晴小朋友一定得每天都开心 当我们测序拿得到各个样本中基因的表达值&#xff0c;就可以用基因表达值来表征样本间的相关性 代码如下&#xff1a; #样本间相似性&#xff1a;R值 相关性 捕获到的基因在两个样本间表达趋势一致性 exp_RNA <- AverageExpression(fasti…

雷电9模拟器安装magisk和lsposed

模拟器环境配置 1、开启root 2、开启System.vmdk可写入 安装magisk 1、新建模拟器、开启root权限、并安装debug版magisk 下载地址去上面吾爱论坛作者文章下载吧&#xff01;支持他一下&#xff01; 2、打开magisk的app&#xff0c;点击安装 如果弹出获取权限&#xff0c;直接…

JUC面试知识点手册

第一章&#xff1a;Java并发简介 1.1 什么是并发编程 并发编程是指在同一时间段内执行多个任务的编程方式。在单核处理器上&#xff0c;并发通过时间分片来实现&#xff0c;即在同一时间只有一个任务在执行&#xff0c;其他任务被暂停等待。在多核处理器上&#xff0c;并发可…

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录 docker-compose up -d #启动靶场 docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at master vulh…

java宠物商城网站系统的设计与实现

springboot508基于Springboot宠物商城网站系统 题目&#xff1a;宠物商城网站系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往…

Datawhale X 李宏毅苹果书 AI夏令营第五期 DL进阶方向 Task3笔记

Datawhale X 李宏毅苹果书 向李宏毅学深度学习&#xff08;进阶&#xff09; 是 Datawhale 2024 年 AI 夏令营第五期的学习活动&#xff08;“深度学习 进阶”方向&#xff09; 往期task1链接&#xff1a;深度学习进阶-Task1 往期task2链接&#xff1a;深度学习进阶-Task2 我做…

如何利用评论进行有效的 ASO

如何利用评论进行有效的ASO的问题的答案通常以“正面评论”一词开始。确实&#xff0c;这句话首先浮现在脑海中。但这个问题的答案包括负面评论、用户体验、提高知名度、评分、根据评论优化应用程序以及许多其他有趣的点。这里几乎没有无聊的统计数据&#xff0c;这些数字也不会…

c++ 原型模式

文章目录 什么是原型模式为什么要使用原型模式使用场景示例 什么是原型模式 用原型实例指定创建对象的种类&#xff0c;并通过拷贝这些原型创建新的对象&#xff0c;简单理解就是“克隆指定对象” 为什么要使用原型模式 原型模式&#xff08;Prototype Pattern&#xff09;是…

绝对定位导致内容自动换行问题解决

今天在做一个定位元素的时候遇到一个嵌套定位之后&#xff0c;使用绝对定位的元素的内容自动换行的问题&#xff0c;希望不换行只在一行显示。 可以通过添加 white-space: nowrap; 样式控制不换行 <div class"box"><div class"box1"><div …

【MySQL超详细安装步骤】Centos7安装MySQL8

文章目录 1.卸载2.修改yum源为阿里源2.1首先检查是否安装wget2.2 备份 yum 源文件2.3 下载阿里云yum源文件2.4 清理yum缓存 3.安装mysql源3.1 下载mysql源3.2 安装mysql源3.3 检查是否安装成功 4. 安装MySQL4.1 使用yum安装4.2 启动MySQL 5.配置防火墙5.1 开放3306端口 6.登录M…

2. GIS数据工程师岗位职责、技术要求和常见面试题

本系列文章目录&#xff1a; 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

macos系统内置php文件列表 系统自带php卸载方法

在macos系统中, 自带已经安装了php, 根据不同的macos版本php的版本号可能不同, 我们可以通过 which php 命令来查看mac自带的默认php安装路径, 不过注意这个只是php的执行文件路径. 系统自带php文件列表 一下就是macos默认安装的php文件列表. macos 10.15内置PHP文件列表配置…

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大&#xff0c;尤其是在嘈杂的环境中&#xff0c;音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”&#xff0c;我的手机音质瞬间提升了好几个档次。 软件简介&#xff1a; “扬声器助推器”利用先进的音频处理技术&#xff0c;能够…

卷积神经网络(一)

目录 一.卷积神经网络的组成 二.卷积层 目的: 参数: 计算公式 卷积运算过程 三.padding-零填充 1.Valid and Same卷积 2.奇数维度的过滤器 四.stride步长 五.多通道卷积 1.多卷积核(多个Filter) 六.卷积总结 七.池化层(Pooling) 八.全连接层 都看到这里了,点个…

C++——STL(vector类)

1.vector的介绍 vector的文档介绍 vector是表示可变大小数组的序列容器。vector就像数组一样&#xff0c;拥有连续的储存空间来储存元素&#xff0c;这就意味着可以通过下标的方式来访问vector的元素&#xff0c;很高效&#xff1b;但与数组不同的是vector的大小是动态改变的…

新加坡服务器:亚洲地区的优选之选

在全球化日益加深的今天&#xff0c;互联网成为了连接世界的桥梁&#xff0c;而服务器作为互联网的基础设施&#xff0c;其选择对于企业的业务发展和用户体验至关重要。在众多海外服务器中&#xff0c;新加坡服务器以其独特的地理位置、先进的技术支持、稳定的网络环境以及完善…

站长工具 API 接口,助力网站管理新高度

站长工具是一款非常实用的网站管理工具&#xff0c;通过其提供的API接口&#xff0c;可以轻松实现多种功能&#xff0c;如域名反查、域名备案查询、IPV6归属地查询等。这些功能可以帮助网站管理员更好地管理和优化自己的网站。以下是简单的代码示例&#xff0c;展示了如何使用站…

未雨绸缪:环保专包二级资质续期工程师招聘时间策略

对于环保企业而言&#xff0c;在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新&#xff0c;建议环保企业在二级资质续期前至少提前6至12个月启动工程师招聘工作。这个时间规划可以细化为以下几个阶段&#x…

SprinBoot+Vue个性化旅游推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

C语言深度剖析--不定期更新的第三弹

hello,everybody!最近又更新了哈&#xff0c;希望对大家有所帮助 switch case关键字 基本语法&#xff1a; switch(整型变量/常量/整型表达式){case 1:var 1;break;case 2:var 2;break;case 3:var 3;break;default:break; }switch case语句也和if语句一样具有判断和分支的功…