1.2、数据的表示

简介

由于受计算机的硬件决定,任何存储在计算机中的数据,其本质都是以0 1二进制码的形式来进行存储的。
根据冯诺依曼提出的经典计算机体系结构框架,一台计算机还有运算器、控制器、存储器、输入和输出设备组成。
其中运转器它只有加法运算器,并没有减法运算器。据说一开始是有减法预算器的,只是后来由于减法运算器它的硬件开销比较大,然后就被废除了。 所以在计算机当中是没有办法直接做减法的。它的减法是通过做加法来实现的。
在我们的现实世界当中,所有的减法也可以当做加法来进行,比如说减去一个数,可以看作是加上这个数的相反数。例如,2-1 可以看作是2+(-1),所以这么计算的前提条件是先要有负数的概念。这就是为什么我们的二进制数要引入一个符号位。
符号位在内存当中放在最左边的一位。比如说1101。它最左边的一位,也就是他的符号位。该位如果为0,代表是一个正数;如果为1,代表是一个负数。
而且从硬件的角度上来看,只有正数加负数才算是减法,正数与正数相加,负数与负数相加,其实都可以通过加法器来直接相加。
我们后面讲到的源码、反码和补码的产生过程,就是为了解决计算机做减法和引入符号位的问题。

二进制转十进制

按权相加法

无符号的二进制整数

从右往左依次用二进制位上的位数乘以2的n次幂的和(n大于等于0)
例如:1 1 0 = 1 * 2² + 1 * 2¹ + 0 * 2º = 4 + 2 + 0 = 6

110
位数第2位第1位第0位
相乘1 * 2²1 * 2¹0 * 2º

带符号的二进制整数

除去最高的符号位(1为负数,0为整数),其余与无符号二进制转化为是兼职方法相同
例如:1 1 0 1 = 1 101 = - (1 * 2² + 0 * 2¹ +1 * 2º)= -5

小数二进制

从小数点后第1位上的二进制数字乘以2的负一次方,
加上第二位上的二进制数字乘以2的负二次方,
以此类推第N位上的二进制数字乘以2的负N次方
例如:101.011 = 1 * 2² + 0 * 2¹ + 1 * 2º + 0 * 2-1 + 1 * 2-2 + 1* 2-3 = 4+0+1 + 0 + 1 * ½ + 1* ¼ + 1 * ​ 1 8 \frac 18 81​ ​ = 5.375

练习题

将二进制1100.101转化为十进制,结果是()。
A. 12.625
B. 12.75
C. 24.625
D. 24.75

答案:A

十进制转二进制

转化整数

  1. 将整数部分除2
  2. 取余当商不为0时
  3. 将商作为被除数
  4. 继续除2取余直至商为0
  5. 将余数按从下到上的顺序记录

转化小数

  1. 将小数部分乘2取整
  2. 如果结果仍有小数就继续乘2
  3. 直到小数部分为0
  4. 或者已经达到了精度要求
  5. 将取整的结果按从上到下的顺序记录

举例:112.25

整数部分:1110000
在这里插入图片描述
小数部分:01
在这里插入图片描述
所以112.25 = 1110000.01

练习题

将十进制11.75转化为二进制,结果是()。
A.1011.11
B.1010.11
C.1010.01
D.1011.01

答案:A
在这里插入图片描述

原码

最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。
数值0的原码表示有两种形式:[+0]原=0 0000000,[-0]原=1 0000000
以带符号位的四位二进制数为例:1 010,最高位为1表示这是一个负数
其它三位010,即02²+12¹+0*2º=2
所以1010表示十进制数-2
在这里插入图片描述
二进制和十进制的转换参考文章二进制和十进制

加法和减法运算

用二进制原码计算1+2 = 3,可以看出加法运算结果没有问题
在这里插入图片描述
用二进制原码计算 1 - 1 = 1 + (-1) = 0,可以看出减法运算结果不正确,这都是符号位引起的
在这里插入图片描述

练习题

若机器字长为8,则+127和-0.5分为表示为()
A. 01111111,01000101
B. 01111111,11000000
C. 11111111,01000000
D. 10000000,11000101

答案:B
在这里插入图片描述

反码

原码最大的问题就在于一个数加上它的相反数不等于0
0001+1001=1010,1+(-1)=-2

  • 正数的反码还是等于原码。+3 = 0 011
  • 负数的反码就是它的原码除符号位外,其它位按位取反。-3 = 1 100
  • 数值0的反码表示有两种形式:[+0]反=0 0000000,[-0]反=1 1111111

用反码解决1+(-1)= -2问题。用反码相加
在这里插入图片描述
我们再看一下两个负数相加(-1)+(-3),可以看到计算结果错误,说明用反码计算两个负数相加会出错。所以计算机当中的运算名下不能用反码,那么反码存在的意思是什么?在数码变换当中,它是一个中间环节,在下一节补码就能看到反码的作用了。它起到了中间环节的作用。
在这里插入图片描述

练习题

若机器字长为8,则+45和-45的反码分为表示为()
A. 10101101,01000101
B. 10101101,01000000
C. 00101101,10101101
D. 00101101,11010010

答案:D
在这里插入图片描述

补码

  • 正数的补码等于它的原码
  • 负数的补码等于反码+1或等于(2机器字长-|负数|)原码
  • 数值0有唯一的编码:[+0]补=00000000,[-0]补=00000000

-5的补码=(24- 5)原码=11原码=1011
在这里插入图片描述

例:若机器字长为4,计算6-2
-2 = (24-|-2|)原码 = 14 = 1110
6+(-2)= 0110+1110 = 0100补码 = 0100=4 ,可以看出计算结果正确
在这里插入图片描述

计算机中均采用补码进行加减运算

练习题

  1. 如果“2X”的补码是“90H”,那么X的真值是()(2016上半年试题
    A.56
    B.-56
    C.72
    D.-72

答案:B
H代表是16进制的数,1位H<------->4位B。9 = 1001, 0 = 0000。所以90H = 1001 0000
在这里插入图片描述

  1. 计算机系统中采用补码表示有符号的数值,()。(2022下半年试题)
    A.可以保持加法和减法运算过程与手工运算方式一致
    B.可以提高运算过程和结果的精准程度
    C.可以提高加法和减法运算的速度
    D.可以将减法运算转换为加法运算从而简化运算器的设计

答案:D

移码

移码:补码的符号位取反
移码的主要用途是表示浮点数的指数(阶码)

原码VS反码VS补码VS移码

在这里插入图片描述

浮点数

考查频率不高
在计算机当中,所有的数据格式都是0 1 二进制。如果小数点固定在数值的前面或者后面,就叫定点数,比如前面内容里的原码、反码、补码、移码都是定点数。除了定点数以外还有浮点数

  • 浮点数表现形式:
    N=尾数 X 基数阶码(指数)
    基数都是固定的,二进制是2,十进制是10…
    尾数是由一个小数组成的,阶码是由一个整数组成的
    例如:十进制1.25 * 103,1.25是尾数,3是指数

  • 浮点数的表示格式:

    阶符阶码(移码数符尾数(补码
  • 尾数:用补码表示,位数决定数的有效精度,位数越多精度越高

  • 阶码:用移码表示,位数决定数的表示范围,位数越多范围越大

  • 对阶时,小数向大数看齐,如下图
    在这里插入图片描述

  • 对阶是通过较小数的尾数右移实现的

练习题

浮点数的表示分为阶码和尾数两部分。两个浮点数相加时,需要先对阶,即()(为
阶差的绝对值)。(2018上半年试题)
A.将大阶向小阶对齐,同时将尾数左移n位
B.将大阶向小阶对齐,同时将尾数右移n位
C.将小阶向大阶对齐,同时将尾数左移n位
D.将小阶向大阶对齐,同时将尾数右移n位

答案:D
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoyo勰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值