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

news2025/1/9 1:33:44

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

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

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

  • 它可以使用两个稳定状态的物理器件来进行表示,例如高低电压。
  • 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 为机器数

我们规定:

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

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

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

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

相关文章

随手记录:Livox 时间戳修改为ROS时间戳

参考与前言 传感器类型&#xff1a;Livox-Mid70 参考链接&#xff1a;Ubuntu20.04系统安装Livox ROS Driver 官方驱动&#xff1a;https://github.com/Livox-SDK/livox_ros_driver 碎碎念&#xff1a;之所以要改成rostime主要是 提取pcd的时候发现这个timestamp 300.xxx 打…

我那张被问爆了的漫画头像确实有点东西

不得不说&#xff0c;这个照片变漫画有点东西啊&#xff01;不知道姐妹们有没有发现❗️最近漫画人像它又火起来了&#xff0c;基本上在dy等各大社交软件上&#xff0c;特别是朋友圈已经是刷屏了&#xff5e;随便一张照片经过渲染之后秒变动漫风格照&#xff0c;我就马不停蹄就…

宝塔面板搭建自己的网站,并发布公网远程访问

文章目录 1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4.固定http地址5. 配置二级子域名6.创建一个测试页面 宝塔面板简单几步搭建本地web站点&#xff0c;并做内网穿透&#xff0c;实现公网用户也可以正常远程访问&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1. 环…

这样的速度,还有谁?一个 issue 引发的性能大跃进

前段时间开源了一个关于音频特征提取和分析的小项目&#xff0c;自己是 AI 音频领域方向的&#xff0c;但受限于对音频特征的理解&#xff0c;做研究时总感觉缺乏“底料”&#xff0c;所以当做是学习练手做了这个小东西。 虽然是学习练手的小项目&#xff0c;但也信心满满&…

从盒马来看新零售的全面可行性

来源&#xff5c;新零售 不久前&#xff0c;一家位置极佳的北京老牌超市闭店的消息引发了很多人的唏嘘&#xff0c;这家超市位于北京长安街东侧的万达广场上&#xff0c;曾经作为万达广场的主力店&#xff0c;服务周边居民长达十年之久。 不过&#xff0c;周边的居民很快得知…

哪个牌子的电视盒子好用?经销商总结目前性能最好的电视盒子

做数码经销已经是第九年了&#xff0c;这些年对数码行业也算是颇有研究&#xff0c;大家选购数码产品时都会参考我的建议。今天我将来分享目前性能最好的电视盒子推荐&#xff0c;想知道哪个牌子的电视盒子好用看这篇就足够了。 一&#xff1a;泰捷WEBOX60Pro电视盒子 亮点&a…

27- OCR 光功率计数码管字符识别

要点&#xff1a; 光功率计数码管 1 前言 本案例将使用OCR技术自动识别光功率计显示屏文字&#xff0c;通过本章您可以掌握&#xff1a; PaddleOCR快速使用数据合成方法数据挖掘方法基于现有数据微调 为实现智能读数&#xff0c;通常会采取文本检测文本识别的方案&#xff…

【JavaWeb】jQuery(上)

本章内容 1.jQuery Hello world 2.jQuery 选择器 3.jQuery 过滤器 4.jQuery 元素筛选 1、jQuery 介绍 什么是 jQuery ? jQuery&#xff0c;顾名思义&#xff0c;也就是 JavaScript 和查询&#xff08;Query&#xff09;&#xff0c;它就是辅助 JavaScript 开发的 js 类…

ChatGPT能用来写小说吗-gpt可以续写小说吗

怎么用ChatGPT写网文 ChatGPT是一个语言生成模型&#xff0c;可以用于生成各种文本&#xff0c;包括网文。下面是一些写网文的建议。 确定你的主题和情节。在开始写作之前&#xff0c;你需要确保你有一个明确的主题和情节&#xff0c;这可以帮助你更好地组织你的故事&#xff0…

React18开发中遇到的一些小问题

遇到这样一个问题&#xff0c;初始化时用户登陆后需要获取到用户信息&#xff0c;但是发现获取用户信息这个接口触发了2次&#xff0c;这是不应该的&#xff0c;于是我查阅了一下资料&#xff0c;把自己的笔记记录下来。 还有就是使用mobx遇到的控制台警告问题&#xff0c;也一…

【youcans 的 OpenCV 学习课】22. Haar 级联分类器

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】22. Haar 级联分类器 3. Haar 特征及其加速计算3.1 Haar 特征3.2 Haar 特征值的计算3.3 积分图像3.4 基于积分图像加速计算 Haar 特…

win10系统安装虚拟机及centOS系统

win10系统安装虚拟机及centOS系统 准备工作下载软件及对应文件 安装本次虚拟机安装的版本本次centos安装的版本 问题使用虚拟机打开centos时报错&#xff1a;解决 安装成功效果 准备工作 下载软件及对应文件 虚拟机软件这里使用VMware Workstation,安装完成后需要许可证激活&…

如何快速删除PDF中的一个/多个页面

创建 PDF 后&#xff0c;您将无法更改它。但是&#xff0c;有时您必须从 PDF 中删除页面以保护隐私内容。因此&#xff0c;我们将向您展示几种在桌面或在线上实现它的方法。 第 1 部分&#xff1a;在桌面上从 PDF 中删除页面的最佳方式 桌面软件是从 PDF 中删除页面的最佳方式…

进程的管理

进程的概念 进程的引入是为了更好的研究、描述和控制并发程序的执行&#xff0c;使多道程序的并发执行具有了可控性和可再现性。 进程是一个具有一定独立功能的程序在一个数据集合上一次动态执行过程&#xff0c;简而言之&#xff0c;进程就是程序的一次运行的过程。 进程 程…

决策树(手写代码+隐形眼镜项目)

决策树作为一个分类问题&#xff0c;以信息增益作为特征分类的参考依据&#xff0c;作为一个分类算法&#xff0c;决策树可以将分类过程可视化&#xff0c;而且对于模型所不熟悉的数据&#xff0c;决策树也可以从中提炼出一系列的规则&#xff0c;然后根据数据来创造规则&#…

ArrayList简介

ArrayList 简介 ArrayList 是一个数组列表。它的主要底层实现是Object数组&#xff0c;但与 Java 中的数组相比&#xff0c;它的容量能动态变化&#xff0c;可看作是一个动态数组结构。特别注意的是&#xff0c;当我们装载的是基本类型的数据 int&#xff0c;long&#xff0c;…

Cortex-R52 GIC:Generic Interrupt Controller

ARM Cortex-R52 GIC:Generic Interrupt Controller 1.关于GIC GIC是支持和管理cluster系统中断的资源。它支持中断优先级、中断路由到核心或输出端口、中断抢占和中断虚拟化。 Cortex-R52处理器实现了一个内部GIC分配器用于处理器&#xff0c;每个核心还有一个GIC CPU接口。每…

FreeRTOS 信号量(二)

文章目录 一、计数型信号量1. 计数型信号量简介2. 创建计数型信号量①函数 xSemaphoreCreateCounting()②函数 xSemaphoreCreateCountingStatic() 3. 计数型信号量创建过程分析4. 释放和获取计数信号量 二、计数型信号量操作实验 一、计数型信号量 1. 计数型信号量简介 有些资…

C语言从入门到精通第13天(函数的调用)

函数的调用 无参函数的调用有参函数的调用函数的嵌套调用递归函数的调用函数的声明 函数在定义完以后&#xff0c;如果不被调用时不会被执行到的&#xff1b;在程序中main函数是主函数&#xff0c;是会被自动调用&#xff0c;C程序有且只有一个main函数。 无参函数的调用 调用…

C/C++程序添加ico图标详解

制作Ico图标文件 将图片素材进行编辑&#xff0c;可以截取成正方形&#xff0c;然后以通过在线转换图标工具转换成 ico 格式的图标文件 将ico图标文件放在之前编写好的 startprintservices.cpp 文件目录中 创建资源文件 接着我们创建一个文件命名为 ico.rc 的文件&#xff0…