当前位置: 首页 > news >正文

【计算机组成原理】数据的表示和运算·进位计数制

🚩 本文已收录至专栏:计算机基础

我们可以通过显示屏看到各种形式的数据信息,但数据是如何在计算机中表示呢?运算器又是如何实现数据的算数、逻辑运算?

十进制数是最适合我们日常使用的一种计数方式,除此之外,我们还会用到八进制数和十六进制数,但二进制是最适合计算机使用的计数方法,这是因为:

  • 它可以使用两个稳定状态的物理器件来进行表示,例如高低电压。
  • 0,1正好对应逻辑值 假、真。方便实现逻辑运算。
  • 可以很方便地使用逻辑门电路实现算数运算。

文章内容概览:
在这里插入图片描述

一.演变历程

我们的计数形式进行了长期的演变,尽管象征计数意义的符号在不断的发生改变,淘汰一套又一套,但其核心思想使用不同的符号代表不同权重却始终未曾发生改变,只是为了适应多变与复杂的情景在不断的进行改进,使其使用更加便利。

  • 例如我们先使用‘ I ’代表 1个 ,物品增多后发现 I 太多了不方便,便引入‘ 一 ’代表 5个 ,以此简化表示。
    在这里插入图片描述

  • 随着时间的推移,计数越来越庞大,为了便捷我们便又引入了更多的符号代表不同的权值。由于这种方式是基于“ 加法 ”思想的计数方法,随着数据规模增大,相应表示也不可避免的会越来越复杂。例如:DMCLXVI -> 1000+500+100+50+10+5+1 = 1666
    在这里插入图片描述

  • 为了解决上述问题,我们又发明了基于“ 乘法 ”思想的计数方法,仍旧是使用不同符合代表权重,但是不再是一个固定值,而是根据所在位置动态变化,也就是说符号所在的位置也反应权重。由此催生了我们现在最常使用的十进制数。符号权值 = 符号值 × 符号所处位置权值
    在这里插入图片描述

  • 由此我们可以推断出其表达公式:
    在这里插入图片描述

  • 由于 0~9 一共只有十种符号,要表达加法的时候必须逢十进一,这也是为什么叫做十进制。

二.进位计数制

(1) 引入

基于“ 乘法 ”思想的计数方法,我们可以根据权值符号的数量不同得出不同的进制计数法。

我们使用基数表示每个数码位所用到的不同符号的个数,r 进制的基数为 r。 例如:十进制表示每个位置可以用到十种不同的符号。

由此可以得出二进制,八进制,十进制,十六进制:

二进制:0,1 ====> 每个位置两种表示符号

八进制:0,1,2,3,4,5,6,7 ====> 每个位置八种表示符号

十进制:0,1,2,3,4,5,6,7,8,9 ====> 每个位置十种表示符号

十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ====> 每个位置十六种表示符号

其加法运算方式与十进制类似,同样是逢 r 进一。例如:

二进制 : 11 + 11 = 110 逢二进一

运算:0号位:1 + 1 = 2 = 2(进位) + 0 1号位:1 + 1 + 1(进的一) = 3 = 2(进位) + 1 2号位: 1(进的一)

八进制: 54 + 55 = 131 逢八进一

运算: 0号位:4 + 5 = 9 = 8(进位) + 1 1号位:5 + 5 + 1(进的一) = 11 = 8(进位) + 3 2号位:1(进的一)

十进制: 37 + 55 = 92 逢十进一

运算: 0号位:5 + 7 = 12 = 10(进一) + 2 1号位:5 + 3 + 1(进的一) = 9

十六进制:59 + 58 = B1 逢十六进一

运算: 0号位:8 + 9 = 17 = 16(进一) + 1 1号位:5 + 5 + 1(进的一) = 11 = B

注意:十六进制中 A -> 10 B -> 11 C -> 12 D -> 13 E -> 14 F -> 15

(2) 任意进制 <-> 十进制

(2.1) 任意进制 -> 十进制

我们可以得出任意进制转 r 进制公式,得到一套快速计算任意进制转为十进制的计算模板。记小数点左边第一位为0号位置:

十进制 = Σ(数码位值× 基数 ^ 位置) = Σ(数码位值× 位权)
在这里插入图片描述

(2.2) 十进制-> 任意进制

对于十进制转为其他任意进制我们也有一套通用的计算模板,但是对于整数部分和小数部分的计算方式却有所差异。

  • 对于整数部分:r进制整数部分 = (十进制整数部分 % r) 不断取余数
    在这里插入图片描述

例如:我们将十进制 75 转为二进制数,最后结果为:1001011,注意顺序
在这里插入图片描述

十进制转为其他进制写法类似:
在这里插入图片描述

  • 对于小数部分:r进制小数部分 = (十进制小数部分 × r ) 不断取出整数
    在这里插入图片描述

例如:我们将十进制 0.3 转为二进制数,最后结果为:0.01001…可以发现无限循环了,也就是说我们无法获取到其二进制的精确表示,于此对于无限小数我们只需取到指定精度即可,注意顺序
在这里插入图片描述
十进制转为其他进制写法类似:
在这里插入图片描述

(3) 二进制 <-> 八进制

(3.1) 二进制 -> 八进制

我们知道八进制的基数为 8,即每个位数可以表示八种不同情况。而二进制的基数为 2,即每个位数可以表示两种不同情况。假如我们把三个二进制位组合便可以得到2×2×2=8种不同情况,正好对应八进制每个数码位的八种情况。由此,我们可以得出二进制转八进制的计算方式:将二进制数每3位分为一组,每组转换成对应的八进制符号
在这里插入图片描述

  • 由此上述二进制 -> 八进制为:1111000010.011010 -> 1702.32

注意:当小数点左边位数不够3的整数倍左补0,当小数点右边位数不够3的整数倍右补0

(3.2) 八进制 -> 二进制

八进制转为二进制相当于一个逆向的过程,即每位八进制数可以对应 3 位二进制数。我们只需一一将每位八进制数转为二进制形式即可获取到其所对应的二进制数。
在这里插入图片描述

例如上述我们将八进制数251.5转为二进制数,只需一一转为二进制数再进行组合即可。

(4) 二进制 <-> 十六进制

(4.1) 二进制 -> 十六进制

同理,我们知道十六进制的基数为16,即每个位数可以表示十六种不同情况。而二进制的基数为2,即每个位数可以表示两种不同情况。假如我们把四个二进制位组合便可以得到2×2×2×2=16种不同情况,正好对应十六进制每个数码位的十六种情况。由此,我们可以得出二进制转十六进制的计算方式:将二进制数每4位分为一组,每组转换成对应的十六进制符号
在这里插入图片描述

  • 由此上述二进制 -> 十六进制为:1111000010.011010 -> 3C2.68

注意:当小数点左边位数不够4的整数倍左补0,当小数点右边位数不够4的整数倍右补0

(4.2)十六进制 -> 二进制

十六进制转为二进制相当于一个逆向的过程,即每位十六进制数可以对应 4 位二进制数。我们只需一一将每位十六进制数转为二进制形式即可获取到其所对应的二进制数。

十六进制:AE861 -> 二进制:1010 1110 1000 0110. 0001

一一进行转换,最后再按顺序组合起来。

A -> 1010

E -> 1110

8 -> 1000

6 -> 0110

1-> 0001

(5) 各种进制常见书写方式

对于不同的进制数我们两种常见的书写方式:

  • 用括号()包围进制数,然后在括号右下角进行标识即可

  • 直接在部分进制数后写上指定字母,例如:二级制B(binary), 十进制D(decimalism), 十六进制H(hexadecimal)或 0x,
    在这里插入图片描述

三.真值、机器数

如果我们需要转换的十进制还带有正负号,此时我们就需要再增加一个符号位用来标识正负号,例如用0标识正,1标识负。

例如:

15 -> 1111 + 15 -> 0 1111

8 -> 1000 - 8 -> 1 1000

其中 +15 和 -8 为真值,而 0 1111 和 1 1000 为机器数

我们规定:

  • 真值:符合人类习惯的数字。

  • 机器数:数字实际存到机器里的形式,正负号需要被“数字化”。

相关文章:

【计算机组成原理】数据的表示和运算·进位计数制

&#x1f6a9; 本文已收录至专栏&#xff1a;计算机基础 我们可以通过显示屏看到各种形式的数据信息&#xff0c;但数据是如何在计算机中表示呢&#xff1f;运算器又是如何实现数据的算数、逻辑运算&#xff1f; 十进制数是最适合我们日常使用的一种计数方式&#xff0c;除此之…...

C++ Primer第五版_第十四章习题答案(21~30)

文章目录 练习14.21练习14.22头文件CPP文件 练习14.23头文件CPP文件 练习14.24头文件CPP文件 练习14.25练习14.26练习14.27练习14.28练习14.29练习14.30 练习14.21 编写 Sales_data 类的 和 运算符&#xff0c;使得 执行实际的加法操作而 调用。相比14.3节和14.4节对这两个运…...

服务器性能调优

硬件 如果是硬件瓶颈就换硬件 &#xff08;包括CPU、内存、网卡&#xff09; 软件 如果是方案架构设计有问题就换方案&#xff0c;比如mysql、redis方案有问题 建议先 top 看下软件瓶颈在哪&#xff0c;CPU、内存、网络&#xff08;netstat&#xff09;&#xff0c;哪个进程占…...

带你深入学习k8s--(三) pod 管理

目录 一、简介 1、什么是pod 2、为什么要有pod 二、pod的分类 0、pod常用命令命令 1、准备镜像 2、自主式pod 3、控制器创建pod 4、扩容pod数量 5、通过service暴露pod&#xff08;负载均衡&#xff0c;自动发起&#xff09; 6、更新应用版本 三、编写yaml文件 四、Pod生命周期…...

前端系列11集-ES6 知识总结

ES Module 优点 静态分析 浏览器和 Node 都支持 浏览器的新 API 能用模块格式提供 不再需要对象作为命名空间 export 用于规定模块的对外接口 输出的接口与其对应的值是动态绑定关系可以取到模块内部实时的值 import 用于输入其他模块提供的功能 具有提升效果&#xff0c;会提升…...

连接分析工具箱 | 利用CATO进行结构和功能连接重建

导读 本研究描述了一个连接分析工具箱(CATO)&#xff0c;用于基于扩散加权成像(DWI)和静息态功能磁共振成像(rs-fMRI)数据来重建大脑结构和功能连接。CATO是一个多模态软件包&#xff0c;使研究人员能够运行从MRI数据到结构和功能连接组图的端到端重建&#xff0c;定制其分析并…...

【目标检测论文阅读笔记】Detection of plane in remote sensing images using super-resolution

Abstract 由于大量的小目标、实例级噪声和云遮挡等因素&#xff0c;遥感图像的目标检测精度低&#xff0c;漏检率或误检率高。本文提出了一种新的基于SRGAN和YOLOV3的目标检测模型&#xff0c;称为SR-YOLO。解决了SRGAN网络 对超参数的敏感性和模态崩溃问题。同时&#xff0c;Y…...

外卖app开发流程全解析

外卖app开发是现代餐饮业的一个必备部分。在这个数字化时代&#xff0c;人们更愿意使用手机应用程序来订购食品。因此&#xff0c;为了满足客户需求&#xff0c;餐饮企业需要开发自己的外卖app。 第一步&#xff1a;确定目标受众 在开始外卖app的开发之前&#xff0c;需要确定…...

BUUCTF jarvisoj_level0

小白垃圾做题笔记而已&#xff0c;不建议阅读。。。 这道题感觉主要就是64位程序ebp8 题目中给出了shellcode 我们直接将返回地址覆盖就好。 在main函数中调用了vulnerable_function()函数。 vulnerable函数是一个漏洞函数&#xff1a;(存在缓溢出)&#xff0c;我们只需要将…...

网络安全之入侵检测

目录 网络安全之入侵检测 入侵检测经典理论 经典检测模型 入侵检测作用与原理 意义 异常检测模型&#xff08;Anomaly Detection&#xff09; 误用检测模型&#xff08;Misuse Detection&#xff09; 经典特征案例 ​编辑自定义签名 ​编辑 签名检查过程 检测生命周期…...

元数据管理

1、业务元数据 描述 ”数据”背后的业务含义主题定义&#xff1a;每段 ETL、表背后的归属业务主题。业务描述&#xff1a;每段代码实现的具体业务逻辑。标准指标&#xff1a;类似于 BI 中的语义层、数仓中的一致性事实&#xff1b;将分析中的指标进行规范化。标准维度&#xf…...

C# WebService的开发以及客户端调用

目录 1、WebService简介 1.1 什么是XML&#xff1f; 1.2 什么是Soap&#xff1f; 1.3 什么是WSDL&#xff1f; 2、WebService与WebApi的区别与优缺点 2.1 WebService与WebApi的区别&#xff1a; 2.2 WebService的优缺点&#xff1a; 2.3 WebApi的优缺点&#xff1a; 3…...

有符号数和无符号数左移和右移

主要是有符号数的左移。 有的说不管符号位&#xff0c;直接左移&#xff0c;所以可以一会正数一会复数 https://bbs.csdn.net/topics/391075092 有的说符号位不动&#xff0c;其他来左移 不明白了。。。。 https://blog.csdn.net/hnjzsyjyj/article/details/119721014 https://…...

Netty小白入门教程

一、概述 1.1 概念 Netty是一个异步的基于事件驱动(即多路复用技术)的网络应用框架&#xff0c;用于快速开发可维护、高性能的网络服务器和客户端。 1.2 地位 Netty在Java网络应用框架中的地位就好比&#xff0c;Spring框架在JavaEE开发中的地位。 以下的框架都使用了Nett…...

【逻辑位移和算数位移】

<< 运算符 && >> 运算符 正数位移 当 x>>n 中 x 为正数时&#xff0c;会将x的所有位右移x位&#xff0c;同时左边高位补0 显而易见&#xff0c;运算结束后&#xff0c;值为1 。 可知右移n位&#xff0c;结果就是 x / 2^n&#xff1a;7 / 2 ^2 1;…...

Blender3.5 边的操作

目录 1. 边操作1.1 边的细分 Subdivide1.2 边的滑移 Edge Slide1.3 边的删除1.4 边的溶解 Dissolve1.5 边线倒角 Bevel1.6 循环边 Loop Edges1.7 并排边 Ring Edges1.8 桥接循环边 1. 边操作 1.1 边的细分 Subdivide 在边选择模式&#xff0c;选中一条边&#xff0c;右键&…...

Java与Python、Node.js在人工智能和区块链应用程序开发中的比较

背景 Java、Python和Node.js都是常用的编程语言,它们在不同领域都有广泛的应用。在人工智能和区块链应用程序开发中,这三种语言都具有各自的优势和劣势。 Java的优势 Java在企业级应用中应用广泛,这得益于其跨平台性、安全性和稳定性等特点。在人工智能和区块链应用程序开…...

【计算机是怎么跑起来的】基础:计算机三大原则

【计算机是怎么跑起来的】基础&#xff1a;计算机三大原则 计算机的三个根本性基础1.计算机是执行输入&#xff0c;运算&#xff0c;输出的机器输入&#xff0c;运算&#xff0c;输出 2. 软件是指令和数据的集合指令数据 3. 计算机的处理方式有时与人们的思维习惯不同对计算机来…...

NXP公司LPC21XX+PID实现稳定温度控制

本例使用的是LPC21XX系列芯片提供的PWM功能实现稳定的温度控制。首先我们获得当前环境温度之后&#xff0c;再用设定的温度与当前温度相减&#xff0c;通过PID算法计算出当前输出脉宽&#xff0c;并将其输出到L298N模块中&#xff0c;使加热丝发热&#xff0c;形成闭环&#xf…...

【CE实战-生化危机4重置版】实现角色瞬移、飞翔

▒ 目录 ▒ 🛫 导读需求开发环境1️⃣ CE扫描内存,定位坐标地址(加密后的地址)2️⃣ 硬件写入断点,定位真实坐标地址内存写入断点,定位到访问地址分析代码...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...