计算机组成原理——数据表示(一)

生活是一道长长的旅程,充满了挑战和困难。然而,我们必须坚持下去,努力前进。无论遇到什么困难,我们都要勇敢面对,永不放弃。只有通过不断的努力和坚持,我们才能够取得成功。在这个旅程中,我们可能会失败,但失败并不可怕,只要我们愿意从失败中吸取教训,不断改进自己,我们就一定能够找到成功的道路。成功不是一蹴而就的,它需要我们付出持久的努力和毅力。在困难面前,我们要保持积极的心态,坚信自己的能力,并将困难视为机会去成长和进步。我们要相信自己的潜力和能力,相信未来的美好。只有不停地努力和奋斗,我们才能够实现自己的梦想,创造属于自己的辉煌。让我们一起努力,不断追求进步,勇往直前,向着成功的目标前进!

计算机组成原理资源网

https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载

目录

1.1 数制与编码

1.1.1 常用的进位计数制及其相互转换

1.1.2 BCD码 (Binary-Coded Decimal)

1.1.3 字符与字符串

1.1.4 汉字编码

1.1.5 校验码

1.1.6 真值和机器数


1.1 数制与编码

1.1.1 常用的进位计数制及其相互转换

定义: 进位计数制是表示数值的一种方法,每个数字的位置决定了它的权重。常用的进位计数制包括:

  • 二进制(Binary): 只有0和1两个数字,基数为2。
  • 八进制(Octal): 使用0到7八个数字,基数为8。
  • 十进制(Decimal): 我们日常生活中最常用的计数系统,使用0到9十个数字,基数为10。
  • 十六进制(Hexadecimal): 使用0到9和A到F共十六个符号,其中A到F分别代表10到15,基数为16。

相互转换:

  • 十进制转其他进制: 以转换为二进制为例,通过除基取余法进行转换。例如,将十进制数42转换为二进制:

    • 42 ÷ 2 = 21...0
    • 21 ÷ 2 = 10...1
    • 10 ÷ 2 = 5...0
    • 5 ÷ 2 = 2...1
    • 2 ÷ 2 = 1...0
    • 1 ÷ 2 = 0...1
    • 结果为101010,从下往上读取余数。
  • 其他进制转十进制: 使用按权展开求和法。例如,将二进制数101010转换为十进制:

    • 1×25+0×24+1×23+0×22+1×21+0×20=32+0+8+0+2+0=421×25+0×24+1×23+0×22+1×21+0×20=32+0+8+0+2+0=42
  • 二进制与八进制/十六进制之间的转换: 直接分组转换。因为8 = 2^3,所以每三位二进制数可以转换成一位八进制数;同样地,由于16 = 2^4,每四位二进制数可以转换成一位十六进制数。例如,将二进制数101010转换为八进制:

    • 101 010 → 52
    • 将二进制数101010转换为十六进制:
    • 0010 1010 → 2A
1.1.2 BCD码 (Binary-Coded Decimal)

定义: BCD码是一种特殊的二进制编码方式,用来表示十进制数。每一位十进制数用4位二进制数表示(0000到1001),因此一个字节可以表示两位十进制数。

例子:

  • 十进制数56在BCD码中表示为0101 0110

特点:

  • 直观易懂,便于人们阅读和理解。
  • 在某些应用场景下(如金融计算)避免了二进制浮点运算带来的精度损失。
1.1.3 字符与字符串

字符编码:

  • 计算机内部使用特定的编码方案来表示字符。最常用的是ASCII(American Standard Code for Information Interchange)和Unicode标准。
    • ASCII: 使用7位或8位二进制数表示128或256个不同的字符,包括字母、数字、标点符号等。例如,字母'A'在ASCII中的编码是01000001
    • Unicode: 支持更多的字符集,特别是非拉丁文字符,如中文、日文等。UTF-8是变长编码,对于ASCII字符占用1个字节,而对于其他字符(如汉字)则可能需要2到4个字节。

字符串:

  • 字符串是由多个字符组成的序列。例如,在Python中,字符串可以用引号括起来表示:
    s = "Hello, World!"
1.1.4 汉字编码

定义: 汉字编码是指如何用计算机可以识别的方式表示汉字。早期有GB2312、GBK等编码标准,现在普遍采用UTF-8、UTF-16等更通用的Unicode编码。

例子:

  • UTF-8编码下的“你好”:
    • “你”的UTF-8编码可能是E4 BD A0(具体取决于实现)。
    • “好”的UTF-8编码可能是E5 A5 BD

特点:

  • UTF-8是变长编码,对于ASCII字符占用1个字节,而对于其他字符(如汉字)则可能需要2到4个字节。
  • 它兼容ASCII,同时能够表示全世界几乎所有语言的文字。
1.1.5 校验码

定义: 校验码是为了检测传输错误而附加的数据。它可以是奇偶校验、循环冗余校验(CRC)等形式。

应用:

  • 在数据通信中,发送端会根据一定规则生成校验码并附带在数据后面一起发送;接收端收到数据后重新计算校验码并与接收到的进行对比,如果不一致则说明数据可能出错。

例子:

  • 奇偶校验: 如果使用偶校验,那么所有有效位加上校验位应该包含偶数个1。例如,数据1010(有两个1)加上偶校验位后变为10100(仍然是两个1)。
  • 循环冗余校验(CRC): CRC是一种更为复杂的校验方法,它基于多项式除法原理,能提供更高的检错能力。例如,Ethernet帧尾部的FCS字段就是通过CRC算法计算出来的。
1.1.6 真值和机器数

真值: 真值是指实际存在的数值,即我们在日常生活和数学中使用的数字,可以是正数、负数或零。

机器数: 机器数是计算机内部用来表示数值的形式,采用二进制表示法。由于计算机硬件基于二进制逻辑工作,所有数据必须以机器数形式存储和处理。

  • 无符号数: 只能表示非负数,每一位都用于表示数值大小,没有专门的符号位。
  • 有符号数: 可以表示正数和负数,最高位通常作为符号位,0 表示正数,1 表示负数。
    • 原码: 符号位加上绝对值的二进制表示。例如,8位二进制中的+5为00000101,-5为10000101
    • 反码: 正数的反码等于其原码;负数的反码是在原码基础上,除了符号位外,其余各位取反。例如,-5的反码为11111010
    • 补码: 是最常用的表示方式。正数的补码等于其原码;负数的补码是在其反码的基础上加1。例如,-5的补码为11111011

计算示例:

  • 从真值到机器数(补码)的转换:
    • 转换十进制数-5为8位二进制补码:
      1. 先将5转换为二进制:00000101
      2. 对这个二进制数取反:11111010
      3. 加1:11111011
  • 从机器数(补码)到真值的转换:
    • 解释8位二进制补码11111011
      1. 检查符号位,最高位是1,说明这是一个负数。
      2. 减1后对剩余部分取反:11111010 -> 00000101
      3. 将结果转换回十进制,并加上负号:-5

总结: 数制与编码的知识覆盖了计算机内部数据表示的核心概念,从不同进位计数制之间的转换到具体的编码方式,再到确保数据完整性的校验机制,都是理解和设计高效计算机系统的关键要素。

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

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

相关文章

强化学习入门--基本概念

强化学习基本概念 grid-world example 这个指的是一个小机器人(agent)在一个网格区域(存在边界),网格中存在需要躲避的格子和目标格子,我们的目的就是找到到达目标格子的最短路径 state 表示智能体相对…

STMCubeMX配置STM32F103ZET6

1 配置时钟 配置RCC。 配置 SYS。将Timebase Source配置为TIM1, SysTick留给FreeRTOS用。 注意: 由于第一次配置的时候忘记配置这个步骤,导致工程第一次烧录成功后,后面一直无法烧录,报以下错误: keil no target connect Error: Flash Download failed - Target DLL h…

Leetcode:2239

1,题目 2,思路 循环遍历满足条件就记录,最后返回结果值 3,代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…

C语言之斗地主游戏

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 ​ C语言之斗地主游戏 目录 程序概述程序设计 Card类CardGroup类Player类LastCards类Land…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)图像变换

形态变换 图像处理中的形态学操作是处理图像结构的有效方法。以下是一些常见的形态学操作的介绍及其在 OpenCV 中的实现示例。 1. 腐蚀(Erosion) 腐蚀操作通过消除图像边界来减少图像中的白色区域(前景),使物体的边…

【Prometheus】PromQL进阶用法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

计算机网络介质访问控制全攻略:从信道划分到协议详解!!!

一、信道划分介质访问控制 介质访问控制:多个节点共享同一个“总线型”广播信道时,可能发生“信号冲突” 应该怎么控制各节点对传输介质的访问,才能减少冲突,甚至避免冲突? 时分复用(TDM) 时分复用:将时间分为等长的“…

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置 1.Prometheus部署1.2.Prometheus修改默认端口 2.grafana可视化页面部署3.alertmanager部署4.监控配置4.1.主机监控node-exporter4.2.监控mysql数据库mysqld_exporter4.3.监控mongod数据库mongodb_expo…

基于tldextract提取URL里的子域名、主域名、顶级域

TLD是TopLevel Domain的缩写。‌tldextract‌ 是一个用于从URL中提取子域、主域名和顶级域(TLD)的Python库。它利用公共后缀列表(Public Suffix List)来确保即使是复杂或不常见的URL结构也能被正确解析。tldextract能够处理包括IC…

常见Arthas命令与实践

Arthas 官网:https://arthas.aliyun.com/doc/,官方文档对 Arthas 的每个命令都做出了介绍和解释,并且还有在线教程,方便学习和熟悉命令。 Arthas Idea 的 IDEA 插件。 这是一款能快速生成 Arthas命令的插件,可快速生成…

win32汇编环境,对多行编辑框添加或删除文本

;运行效果 ;win32汇编环境,对多行编辑框添加或删除文本 ;主要要先设置文本的开始点与结束点,然后把一段文本顶替上去。没有添加文本或删除文本的概念,只有顶替。如果开始点与结束点都是前面文本的长度值,则成了从后面添加文本的效果。如果结束…

CSDN年度回顾:技术征途上的坚实步伐

嘿,时光过得可真快呀,就像那匹跑得飞快的白马,嗖的一下,2024 年的日历就这么悄无声息地翻到了最后一页。这会儿我回头看看在 CSDN 上度过的这一年,心里那叫一个感慨万千,满满的都是喜悦,就像心里…

人脸识别打卡系统--基于QT(附源码)

逃离舒适区 项目源代码放在我的仓库中,有需要自取 项目地址 https://gitcode.com/hujiahangdewa/Face_recognition.git 文章目录 一、项目结构分析二、服务器的搭建三、客户端的搭建四、人脸识别库的申请五、基于人脸识别库的识别判断六、QT人脸识别----调用百度ai…

人工智能在数字化转型中的角色:从数据分析到智能决策

引言 在数字化转型浪潮中,人工智能(AI)正迅速崛起,成为推动企业创新和变革的关键力量。面对日益复杂的市场环境和激烈的行业竞争,企业亟需借助技术手段提高运营效率、优化决策过程,并增强市场竞争力。而AI…

react install

react 安装 React 是一个用于构建用户界面的 JavaScript 库。以下是安装 React 的步骤: 使用 Create React App Create React App 是一个官方支持的命令行工具,用于快速搭建 React 应用。 安装 Node.js 和 npm 确保你的计算机上安装了 Node.js 和 npm…

Android系统开发(二十):字体活起来,安卓自定义字体改造指南

为什么要写这篇文章? 你是否厌倦了千篇一律的安卓默认字体?想让你的设备从“乏味的配角”变成“炫酷的主角”?好消息!从Android 12到Android 15,自定义字体变得更简单、更强大。尤其是表情字体的更新,不仅…

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3.纯python的实惠版)

前情: 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1.标准版)-CSDN博客 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(2.换掉付费的Event Hubs)-CSDN博客 python脚本实现 厉害的…

python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖

【1】引言 前序学习了使用numpy创建单通道的灰色图像,并对灰色图像的局部进行了颜色更改,相关链接为: python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 之后又学习了使用numpy创…

Linux系统常用指令

查找文件 find / -name "<文件名>" 2>/dev/null //遍历系统查找指定文件名文件ls -l | grep "<文件名>" //列出当前目录下有关文件名的文件find -name sw_sfp_alarm_cfg.xml //查找文件名对应路径 切换目录 编辑文件 vi <文件…

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …