进位计数制的基本概念

​ 将数字符号按顺序排列成数位,并遵照某种由低到高的进位方式计数表示数值的方法,称作为计数制。

十进制

十进制计数制由0、1、2、3、4、5、6、7、8、9共10个数字符号组成。相同数字符号在不同的位数上表示不同的数值,每个数位计满十就向高位进一,即“逢十进一”。

八进制

八进制计数制由0、1、2、3、4、5、6、7共8个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满八位就像高位进一,即“逢八进一”。

二进制

二进制计数制由0和1共两个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满二就向高位进一,即“逢二进一”。

其他进制

​ 在日常生活和工作中还会使用其他进制数。如:十二进制数、十六进制数、百进制数和千进制数等。无论哪种进制数,表示的方法都是类似的。如:十六进制数由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F共16个符号组成,“逢十六进一”。不同的是,用A、B、C、D、E和F分别表示10、11、12、13、14和15六个数字符号。

基数与权

​ 某进制计数制允许选用的基本数字符号的个数称为计数。一般而言,J进制数的计数为J,可供选用的基本数字符号有J个,分别是0到J-1,每个数位计满J就向高位进一,即“逢J进一”。

​ 某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号所处位置有关的常数,该常数称为“位权”(简称“权”)。位权的大小是以计数为底、数字符号所处的位置的序号为指数的整数次幂。

​ 十进制数允许使用是个基本数字符号,所以基数为10,每位数字符号代表的位数的大小是以10为底,数字符号所处位置的序号为指数的整数次幂。

​ 十进制的百位、十位、个位和十分位的权分别为102,101,100,10-1。故(555.5)10 可表示成(555.5)10=5 * 10^2+5 * 10^1+5 * 10^0+5 * 10-1。J进制数相邻两位数相差J倍,若小数点向左移n位,则整个数值就缩小Jn。反之,小数点向右移n位,数值就放大J^n。

数制之间的转换

​ 计算机内部使用的数字符号只有“0”和“1”两个。也就是说,计算机内部使用的是二进制数,所有的数值数据和非数值数据,都是由“0”和“1”这两个数字符号加以组合而成的,我们称之为“二进制代码”。

​ 计算机只用二进制的两个数码“0”和“1”来实现算数和逻辑运算,而人们仍然用十进制的形式向计算机中输入原始数据,并让计算机也用十进制形式显示和打印运算结果。所以,必须有一种自动转换方法,即让数据输入计算机后,将十进制转换成对应的二进制数,并在处理完毕后,再自动将二进制结果转换位十进制数。

​ 为了表达方便起见,常在数字后加一缩写字母后缀作为不同进制的标识。各种进制数的后缀字母分别为:

​ B:二进制数 O:八进制数

​ D:十进制数 H:十六进制数

​ 对于十进制数,通常不加后缀,也即十进制数后的字母D可省略。

十进制转二进制

​ 整数转二进制整数转二进制是最常见的。核心在于除2取余,倒序排列,高位补零。 不断地将数字除以2,将余数写一边,直到商为0时停止。下方的为二进制的高位,由高位到低位倒序排列余数,高位不够用0来代替。

负整数转二进制

​ 先是将对应的正整数转换成二进制后,对二进制取反然后再加1。以-10为例。10的二进制表达是(00001010)B,由于高位都是0,所以可以省略,写成(1010)B ,(用B来表示表达的是二进制)。

  1. 先取反。取反的意思就是1变成0,0变成1。(00001010)B=>(11110101)B

  2. 加上1。由于是二进制,所以我们逢二进一。(11110101)B =>(11110110)B。由于小数的高位都是1,所以我们也可以将高位省去,只保留(0110)B。不过注意和正整数进行区别。

小数转二进制

将小数部分乘以2,取整数(这个整数不是0就是1),当乘以二后小数部分结果为0或者位数够了,这些整数就是二进制。

以0.125为例

0.125 * 2 =0.25 整数部分为 0

0.25 * 2 = 0.5 整数部分为 0

0.5 * 2 = 1.0 整数部分为1,小数部分为0,停止。

二进制就为0.001

如果是带整数部分的小数进行进制转换,那么分开来处理,先将整数部分,转换成二进制,再将小数部分,转为二进制。

注意 小数进行二进制转换是存在无法除尽的情况的,这是正常的。根据题意保留足够的位数即可。

二进制转十进制

使用按权相加法。

高位为0

首先第一步将位数补齐,如果高位是0则是一个正数。将其分离位数,将分离出来的位数按从低位到高位的顺序,依次和2的冥相乘累加。以(1010)B为例。

分离位数: 1 0 1 0 => 相乘累加

\[0\times2^0+1\times2^1+0\times2^2+1\times2^3=10
\]

高位为1

如果高位为1,则说明是一个负数,那就先减1,再进行取反,在进行转换。以(11110110)B为例:

减一:(11110101)B => 取反: (00001010)B=>按权相加:

\[0\times 2^0+1\times2^1+0\times2^2+1\times2^3=10
\]

小数形式

整数部分和小数部分分开计算。整数部分参考上面。小数部分则是相反。以(0.001)B为例。按权相加:

\[0\times2^{-1}+0\times2^{-2}+1\times2^{-3}=0.125
\]

其他进制转换

整体上的方法和十进制与二进制的转换方法类似。转换成x进制的话使用除x取余,倒序排列,高位补零。二进制转换成其他进制还是采用按权相加的方法。

八进制与十六进制

八进制是逢八进一。十进制转八进制的话,过程就是不断地将数字除以8,将余数写一边,直到商为0时停止。下方的为二进制的高位,由高位到低位倒序排列余数,高位不够用0来代替。以十进制10转换为八进制例。

十六进制也是类似,需要注意的点是,十六进制的10 ~ 15是使用A ~ F来表示的。

NOIP初赛篇——06数制转换的更多相关文章

  1. NOIP初赛篇——05计算机语言

    程序 ​ 程序就是一系列的操作步骤,计算机程序就是由人实现规定的计算机完成某项工作的操作步骤.每一步骤的具体内容能够理解的指令来描述,这些指令告诉计算机"做什么"和"怎么 ...

  2. NOIP初赛篇——09原码、反码和补码

    一.数的原码.补码和反码表示 机器数和真值 ​ 在计算机中,表示数值的数字符号只有0和1两个数码,我们规定最高位为符号位,并用0表示正符号,用1表示负符号.这样,机器中的数值和符号全"数码化 ...

  3. NOIP初赛篇——07信息编码表示

    一.基本概念 编码 ​ 计算机要处理的数据除了数值数据以外,还有各类符号.图形.图像和声音等非数值数据.而计算机只能识别两个数字0,1.要使计算机能处理这些信息,首先必须要将各类信息转换成0与1表示的 ...

  4. NOIP初赛篇——04计算机软件系统

    计算机软件是指计算机系统中的程序及其文档,也是用户与硬件之间的接口,用户主要通过软件与计算机进行交流,软件是计算机的灵魂.没有安装软件的计算机称为"裸机",无法完成任何工作.一般软 ...

  5. NOIP初赛篇——10计算机网络

    网络的定义 ​ 所谓计算机网络,就是利用通信线路和设备,把分布在不同地理位置上的多台计算机连接起来. ​ 计算机网络是现代通信技术与计算机奇数结合的产物. ​ 网络中计算机与计算机之间的通信依靠协议进 ...

  6. NOIP初赛篇——08计算机安全知识

    引言 ​ 计算机安全中最重要的是存储数据的安全,其面临的主要威胁包括:计算机病毒.非法访问.计算机电磁辐射.硬件损坏等. ​ 计算机病毒是附在计算机软件中的隐蔽小程序,它和计算机其他工作程序一样,但会 ...

  7. NOIP初赛篇——03中央处理器CPU

    CPU ​ CPU(中央处理单元)是微机的核心部件,是决定微机性能的关键部件.20世纪70年代微型机的CPU问世,微型计算机的核心部件微处理器从Intel 4004,80286,80386,80486 ...

  8. NOIP初赛篇——02计算机系统的基本结构

    引言 计算机系统由硬件和软件两部分组成,硬件系统是计算机的"躯干",是物质基础.而软件系统则是建立在这个"躯干"上的"灵魂". 计算机硬件 ...

  9. NOIP初赛篇——01计算机常识

    发展历史 年代划分 代别 年代 逻辑(电子)元件 第一代 1946-1958 电子管 第二代 1959-1964 晶体管 第三代 1965-1970 集成电路 第四代 1971-至今 大规模.超大规模 ...

随机推荐

  1. Java 中的语法糖,真甜。

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱 ...

  2. WordCounter项目(基于javase)

    1.  Github项目地址: https://github.com/Flyingwater101/WordCount 1.  PSP表格 PSP2.1 Personal Software Proce ...

  3. 百度前端技术学院-基础-day2

    2020.9.15 今天是学习前端基础技术的第二天,今天制作了一个在线简历,纯html的那种.帮助我复习了以前的基础知识,也增加了新的知识点,比如制作列表可以用fieldset来整合数据. 我的在线简 ...

  4. 学习笔记:斜率优化DP

    作为数学渣,先复习一下已知两点\((x_1, y_1)\), \((x_2, y_2)\),怎么求过两点的一次函数的斜率... 待定系数法代入 \(y = kx + b\) 有: \(x_1k + b ...

  5. Centos安装JDK、Tomcat

    准备工作,先下载JDK.Tomcat包:使用FileZilla将软件包发送到/home/software目录下. 1 安装JDK8 首先卸载已有的JDK. # 查看版本 java -version # ...

  6. Windows脚本转换Liunx识别并执行

    1.执行安装: yum install -y dos2unix  插件2.执行 dos2unix test.sh3.赋值权限 chmod   +x    test.sh

  7. 《Stereo R-CNN based 3D Object Detection for Autonomous Driving》论文解读

    论文链接:https://arxiv.org/pdf/1902.09738v2.pdf 这两个月忙着做实验 博客都有些荒废了,写篇用于3D检测的论文解读吧,有理解错误的地方,烦请有心人指正). 博客原 ...

  8. Numpy的学习3-索引

    import numpy as np A = np.arange(3, 15) # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) print(A[3 ...

  9. sqli-labs Less-1~~~Less-23

    Less-1 payload:'+and+1=2+union+select+1,username,password+from+security.users+limit 0,1--+ 第一关正规的字符型 ...

  10. Docker 笔记学习

    文章目录 概述 CentOS7 Docker 安装 启动 Docker 后台服务 镜像加速 Docker常用命令 如何创建一个镜像 存储和载入镜像 上传镜像 容器的基本操作 创建容器 终止容器 如何进 ...