【连载】计算机组成原理 --- 第二章数据的表示和运算

【计算机组成原理】24王道考研笔记——第二章 数据的表示和运算 阅读详情

本节内容主要分为:

(一):数制与编码

    1:进位计数制及其相互转换;真值和机器数

    2:BCD码;字符与字符串;校验码

(二):定点数的表示和运算

    1:定点数的表示

    有无符号数的表示

    2:定点数的运算

    定点数的移位运算,原码定点数的加减运算;补码定点数的加减运算

    定点数的乘除运算,溢出概念和判定方法

(三):浮点数的表示和运算

    1:浮点数的表示

    2:浮点数的加减运算

(四):算术逻辑单元ALU

    1:串行加法器和并行加法器

    2:算术逻辑单元ALU的功能和结构

2.1:数制与编码

2.1.1 进位计数制及其相互转换

    可以参考这篇 https://wenku.baidu.com/view/15f3b4826529647d26285205.html

2.1.2真值和机器数

    在计算机中,通常采用数的符号和数值一起编码的方法来表示数据,常用的有原码,补码,反码表示法。这种把符号“数字化”的数 称为机器数。

2.1.3BCD码

    二进制编码的十进制数(Binary-Coded Decimal,BCD)通常采用4位二进制数来表示一位十进制数中的0~9这10个数码。但2^4 = 16 - 10= 6, 其有6种状态为冗余状态。

    8421码:

    8421码又称为BCD码,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数码。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。其中每一位“1”代表的十进制数称为这一位的权。因为每位的权都是固定不变的,所以8421码是恒权码。

2.1.4字符与字符串

     计算机内部只能识别和处理二进制代码,所以字符都必须按照一定的规则用一组二进制编码来表示。

     在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。

     字符串的存放:一种常用的表示法是使用一个字符代码的数组,每个字符占用一个字节(如在ASCII代码中)或两个字节(如在unicode中)。它的长度可以使用一个结束符(一般是NUL,ASCII代码是0,在C编程语言中使用这种方法)。

2.1.5奇偶校验码

    奇偶校验位(英语:parity bit)或校验比特(英语:check bit)是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。

奇偶校验位有两种类型:偶校验位与奇校验位。

    如果一组给定数据位中1的个数是奇数,那么偶校验位就置为1,从而使得1的个数是偶数。如果给定一组数据位中1的个数是偶数,那么奇校验位就置为1,使得总的1的个数是奇数。

7位数据
(1的个数)

带有校验位的字节

偶校验位

奇校验位

0000000(0)

00000000

00000001

1010001(3)

10100011

10100010

1101001(4)

11010010

11010011

1111111(7)

11111111

11111110

 

2.2定点数的表示与运算:

2.2.1:定点数的表示

1:机器数的表示方法:

       机器数的表示方法一共有两种:定点表示法和浮点表示法。

定点表示法

定点,就是指小数点的位置保持不变。小数点要么放在最高位之前,要么放在最低位之后,前一种就是定点小数的表示方法,后面一种就是定点整数的表示方法。在计算机中,定点数有四种表示方法:原码、反码、补码和移码。。。

原码

最高位用来表示符号:0代表正数,1代表负数。剩下的全部用来表示这个数的绝对值。。。

例如: x=-110,则x[原]=1110;x=110,则x[原]=0110
注意:对于原码表示方法,0的表示方法有两种:+0:0000,-0:1000。。。

反码

我们在原码的基础上来理解反码吧。。。
最高位用来表示符号:0代表正数,1代表负数。正数的反码和原码的表示方法一样,负数的反码是除了符号位之外,其他位全部取反。。。
例如:x=-110,则x[反]=1001;x=110,则x[反]=0110
注意:和原码表示方法一样,0的反码的表示方法也有两种:+0:0000,-0:1111。。。

补码

最高位用来表示符号:0代表正数,1代表负数。正数的补码和原码的表示方法一样,负数的补码是在反码的基础上+1得到的。。。
例如:x=-110,则x[补]=1001;x=110,则x[补]=0111
注意:和原码以及反码不一样的是:0的表示方法只有一种。。。
补充:还有一种求解一个负数的补码的方法:就是在正数的补码表示上,从右到左寻找第一个1,然后将1左边的数字全部取反。。。

移码

和上述三种表示方法不一样:最高位的0代表负数,1代表正数。要得到一个数的移码也很简单,知道将它的补码形式的符号位取反即可。。。
例如:x=-110,则x[移]=0001;x=110,则x[移]=1111
注意:和补码一样,0的表示方法也只有一种。。。


浮点表示法

浮点,指小数点的位置会浮动,一般用来表示小数。按照位数的不同,常见的浮点数可以分成两种,32位的单精度浮点数,64位的双精度浮点数。当然,在实际的计算机中,还有其他类型的,下面主要对单精度进行谈论,双精度的知识与单精度的类似。。。

单精度

S占一位,表示正负,0为正,1为负。。。
Exponent占8位(双精度浮点数中占11位),表示指数部分。大小为实际指数的大小加上偏移量127(双精度的偏移量大小为1203)。。。
Fraction占23位(双精度浮点数中占52位),表示小数部分。需要注意的是,需要先将数字进行规格化,即装换成1.******的形式。然后,只需要将小数点后面的部分进行存储就可以了,因为除了零之外的其他数的第一位都是1。。。



下面的例子演示如何将一个真值转换成浮点数:


2.2.2定点数的运算

    1:定点数的移位运算

    有两种移位方式,逻辑移位和算数移位。下面以一个8位二进制数1000 1011为例来探讨。

逻辑移位:

把1000 1011视为一串二进制串,不对该串做任何解读,不管是原码还是补码还是别的什么,只管移位,移丢了就移丢了,多出来的空位一律补0。1000 1011逻辑左移一位成为0001 0110,逻辑右移一位成为0100 0101。

算数移位:

算数移位本质上是为了实现有符号数的快速乘除法。算数移位想要达到的效果是:使得算数左移一位得到的结果是原数乘以2(在最高位没有溢出的情况下),使得算数右移一位得到的结果是原数除以2(忽略移丢的最低位)。

原码、反码、补码的编码规则各不相同,在不同的编码规则下要达到同样的最终效果,那就必须对10001011这一串数字作出解读,根据这串数字的编码规则而采用不同的移位策略。

为了达到上述目的,显然应该规定“无论左移还是右移,符号位是不应该因移位改变的”。那么剩下的工作就是看看移位之后空出来的位置应该补0还是应该补1。

先看最简单的原码表示法。若1000 1011B是一个原码,则它表示的是-11D,算数左移时,符号位为1不变,其余位000 1011依次左移,最高位的0移丢了(移丢的是0,所以没有溢出,若此处移丢的是1,则溢出,结果出错),最低位空出来一位,若最低位补0,则最终结果为1001 0110B,表示-22D,就是将-11乘以2的结果。

(此处的道理可参考王道论坛《2012计算机组成原理 联考复习指导》2.2节,再看看唐朔飞《计算机组成原理》第二版P235表6.5和6.6,相信一切就很清楚了。)

同样的道理,以此类推,可总结如下:

有符号数为正数时,原码、反码、补码的空位皆补0,因为它们对于正数的编码是相同的。

有符号数为负数时

原码左移、原码右移得到的空位均补0

反码左移、反码右移得到的空位均补1
补码左移得到的空位补1,补码右移得到的空位补0

要注意区分正负数,比如整数补码的右移空位补0,而负数右移空位补1。

参考http://www.cnblogs.com/ybwang/archive/2011/10/26/2225034.html

2.3浮点数表示法

    在计算机科学中,浮点(英语:floating point,缩写为FP)是一种对于实数的近似值数值表现法,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次指数得到。以这种表示法表示的数值,称为浮点数(floating-pointnumber)。利用浮点进行运算,称为浮点计算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。     

1 浮点数的表示
通常,我们可以用下面的格式来表示浮点数

S

P

M

2:浮点数的运算:

其中S是符号设两个浮点数X=Mx*2Ex ,Y=My*2Ey

实现X±Y要用如下5步完成:
(1)对阶操作:小阶向大阶看齐
(2)进行尾数加减运算
(3)规格化处理:尾数进行运算的结果必须变成规格化的浮点数,对于双符号位(就是使用00表示正数,11表示负数,01表示上溢出,10表示下溢出)的补码尾数来说,就必须是001×××…×× 或110×××…××的形式
若不符合上述形式要进行左规或右规处理。
(4)舍入操作:在执行对阶或右规操作时常用“0”舍“1”入法将右移出去的尾数数值进行舍入,以确保精度。
(5)判结果的正确性:即检查阶码是否溢出
若阶码下溢(移码表示是00…0),要置结果为机器0;
若阶码上溢(超过了阶码表示的最大值)置溢出标志。位,P是阶码,M是尾数。

2.4算术逻辑单元ALU

在计算机中,运算器承担了执行各种算术和逻辑运算的工作,运算器由算术逻辑单元ALU,累加器,状态寄存器和通用寄存器等组成。ALU的基本功能包括加减乘除四则运算。与或非异或等逻辑运算,以及移位,求补等操作。


计算机组成原理——数据的表示和运算 1.数制与编码; 2.运算方法和电路 3.整数的表示和运算 4.浮点数的表示和运算 阅读详情

相关推荐

68页|大型车企集团数字化转型汽车数字化信息系统平台规划方案

这份PPT文档提供了一个全面的汽车集团数字化转型规划方案,涵盖了项目目标、规划思路、实施关注点、解决方案建议以及合作优势等多个方面。

baidu_25525561的博客 1329

原码、反码、补码

计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同[1]。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。 存储时看数据、取出时看类型 ...

gangtienaner的博客 1744

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 867

小白快速掌握之进制之间的转化和原码,反码,补码之间转换

二进制转十进制:1010-----------> 0*2^0+1*2^1+0*2^2+1*2^3。十进制转二进制:除2倒取余 37-------------> 100101。十进制转八进制:除8倒取余 37-------------> 045。八进制转十进制:075------------> 5*8^0+7*8^1。:除16倒取余 37------------->0x25。加1: 1000 1010--------> -10。取反:1000 1010 -----> -10。

m0_58508595的博客 654

STK相关总结

STK简介 一.SIM卡应用工具包(SIM Application Toolkit),又名CAT/USAT,它包含一系列终端与SIM卡的交互指令,SIM卡可以应用卡内的小应用程序和终端交互,从而实现增值服务的目的,STK包括三种类,STK-imsi切换,STK –OTA,STK-BIP 功能: (1) Profile download:配置下载,开机初始化SIM卡过程中,终端告诉SIM卡终端支持哪些功能,STK中download指终端将数据发送给SIM卡 (2) Proactive command: 主动式

jingjing_2的博客 3357

CloudFlare CDN优化延迟

这两天在倒腾一个小网站,因为刚注册的域名还没来得及备案,所以就解析到了国外的服务器临时撸代码。为了防止不必要的麻烦,所以在前端套了CloudFlare,但是延迟就比较感人了,通常在150+左右还时不时的抽风,所以就找了点资料来优化一下这个延迟问题。然后再新增一些CloudFlare的亚太地区节点ip的A解析,有耐心的可以分为电信线路和联通线路,我比较懒,所以只分了境内和默认。众所周知CloudFlare是智齿cname解析的,那么我们今天就要用到这个办法了,这里要注意一下,默认的解析是不能动的。

Zuozi - 网络从业者长见识就来Zuozi.NET 1085

计算机中的正负数表示

在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位都为1),而最小值是0x80000000(除了最高1bit,其他31位都为0)。但是我有几个问题,在这里记录解答一下 关于补码 计算机中的补码是为了方便负数方便运算而设置的,因为如果直接相加,结果是不正确的,正数的补码是其...

alexhu2010q的博客 7818

ardupilot开发 --- Remote ID 篇

适配ardupilot的Remote ID模块研发,远程标识模块研发。Remote ID模块可以通过蓝牙或wifi向外广播无人机的状态信息、位置信息、任务信息等,并可以通过蜂窝数据向国家无人驾驶航空器一体化综合监管服务平台上报这些信息。Remote ID功能是21年起国家出台的民用无人机适航飞行的基本要求!

记录老板的每次pua,分享领导每天的毒鸡汤... 9607

二进制原码,反码,补码,移码

二进制

m0_69235938的博客 1810

【机器学习与数据挖掘实战 | 商务】案例03:基于k近邻算法的非侵入式电力负荷监测与分解的电力分析

本案例结合非侵入式电力负荷监测与分解的案例,重点介绍了在数据可视化的辅助下k近邻算法的应用。首先利用数据可视化寻找数据的特征,构建特征集合。然后构建k近邻模型,利用构建的特征集合训练模型,接着利用该模型对单一设备所属类别进行判定,最后计算实时用电量。

Morse_Chen的博客 2304

运维系列【仅供参考】:微信版本过低 使用CheatEngine绕过

微信版本过低 使用CheatEngine绕过

weixin_54626591的博客 2135

(连载)边喝咖啡边学Unity——第二章 预备知识体系

第二章 预备知识体系 ——本章涉及空间数学、解析几何、线性代数、计算机图形学、算法、数据结构等众多基础学科。同上一章相比,虽然枯燥,但是绝不能称为废话之章,即使粗略的看一遍,也比直接跳过来的好,详细地读完,会让读者以后的开发之路走的更加平坦。 并且本章的知识不仅仅对您的Unity游戏开发有帮助,对于大部分软件开发人员都是大有作用的。 作为传统3D游戏编程来讲,需要运用到的知识面非常之广,涉及到的学科特别之多。而通常讲编程的书籍,会弱化数学知识,讲数学的书籍,会弱化编程方面的知识。这就是我在第一章所提到的数学

宇仔TuT的博客 6500

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

理论开篇,理解什么是编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3113

计算机组成原理(二)——数据的表示和运算

十进制计数法有0~9,共10种符号,逢十进一基数:每个数码位所用到的不同符号的个数,r进制的基数为r二进制:0,1①可使用两个稳定状态的物理器件表示②0,1正好对应逻辑值假、真。方便实现逻辑运算③可很方便地使用逻辑门电路实现算术运算真值:符合人类习惯的数字机器数:数字实际存到机器里的形式,正负号需要被“数字化”

señoritaw的博客 1685

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

[计算机组成原理]组成原理中各种数据的表示与运算方法

数据的表示和运算 数制与编码 进位计数法 *基数:*每个数位所用到的不同符号的个数 基数大(十进制) 基数小(二进制) 位数 少 多 运算(乘法为例) 100种情况 4种情况 机器数与真值 机器数:采用二进制表示形式的连通数符一起代码化的数据,在计算机系统中称为机器数或机器码。 真值:与机器鼠对应的用正、负号加绝对值表示的实际数值称为真值。 小数点本身隐含的,不占用存储空间 进制转换 十进制转换 任意进制转10进制 每一位的 位权*指数幂 [外链图片转存失败,源站可能有防盗链

GO-Back-N and find the thing significant 3671

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机组成原理第二章:数据的表示和运算

二进制转8进制和16进制:分别3位,4位一组,拆开组数反过来8进制和16进制转二进制也是拆开数字转换十进制小数转二进制并不是每个十进制小数都能用二进制小数表述,但任意一个二进制小数都可以用十进制小数表述整数部分正常转小数部分乘基取整,乘积为1.0时结束比如123.6875。

m0_59571950的博客 928

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

本文系统梳理了计算机数据表示与运算的核心知识体系,包括数制编码、定点/浮点数表示与运算,以及算术逻辑单元(ALU)的原理。数制部分涵盖二进制/十六进制转换、校验码和字符编码;定点数部分详解有/无符号数的表示方法及移位、乘除运算规则;浮点数部分解析IEEE 754标准及其加减运算流程;ALU部分介绍硬件运算核心的组成与工作原理。这些内容构成了计算机数据处理的基础,贯穿软硬件设计,是理解CPU指令集、存储系统和编程语言数据类型的理论基础。掌握这些知识有助于建立从编码到运算、从软件到硬件的完整认知闭环。

weixin_42548337的博客 1153

计算机组成原理(2)——数据的表示与运算

二、数据的表示与运算 数据如何表示,运算器如何运算,算的过程如何用电路和硬件来实现。 运算器 考纲要求 1.十、二、八、十六进制数及其相互转换。真值和机器数之间的关系以及BCD码、字符与字符串编码、效验码。 (重点)数据的表示原码、反码、补码、移码以及他们之间的关联与区别。 2.定点数的表示,定点数位移运算、原码定点数加/减运算、补码定点数的加减运算、定点数...

dglf54292的博客 1495

计算机组成原理 --- 数据信息的表示

计算机内部流动的信息可以分为两大类:一类是数据信息,另一类为控制信息。 数据信息是计算机加工处理的对象,而控制信息则控制数据信息的加工处理。 2.1 数据表示应考虑的因素 2.2 数值数据的表示 2.3 非数值数据的表示 2.4 数据信息的校验 2.1 数据表示应考虑的因素 1.数据类型 从大体上分类:数值数据和非数值数据。 2.数据表示范围和精确度 计算机所能表示的数的范围和精...

PengWei Yang 4404

补码转化为原码,补码转化为负补码 的快速转换

前提知识: 1、一个负整数(或原码)与其补数(或补码)相加,和为模。 2、对一个整数的补码再求补码,等于该整数自身。 3、补码的正零与负零表示方法相同。 总之,正整数的补码是其二进制表示,与原码相同。求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。 正整数的原码反码补码一样; 负整数的反码是除了原码符号位其他位全部取反,补码是反码加一。 备注:计算中主要采用的是补码,就是将减法计算变成加法计算,反码是求补码的中间状态此外。补码与原码相互转换,其运算过

fwk19840301的博客 5万+

计算机组成原理 数据的表示与运算

概念]移位运算算术移位、逻辑移位、循环移位右移:高位补0,低位舍弃;左移: 低位补0,高位舍弃概念(1)加法器直接对原码进行计算可能会出错先判断符号位,若相同,则绝对值相加,结果符号位不变;若不同,则做减法,绝对值大的数减去绝对值小的数,结果的符号与绝对值大的数相同(3)减法规则:两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算(4)运算时注意机器字长,当左边出现溢出时,将溢出位丢掉原码的加法运算正+正一绝对值做加法,结果为正。

个人博客,记录了本人学习的各种有趣的技术。 3711

[知识点篇]《计算机组成原理》之数据信息的表示

将数据按照某种方式组织,以便机器硬件能直接识别和使用。现代计算机采用二进制进行数据表示。

ysy1119的博客 1457

原码、反码、补码、移码

原码反码补码移码的基础

ics_0的博客 984
上一篇: 一步一步的搭建Tomcat服务器 + servlet + android客户端
下一篇: 【连载】计算机组成原理 --- 第三章存储系统
ljf_study
博客等级 码龄10年 72粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值