小数的原码反码补码怎么求,负小数的补码

文章 3年前 (2021) admin
0

Q1:定点小数补码编码[X]补=1.011000B的真值是多少?

小数点位于符号位后,是纯小数和负数。补码减一,就是1.010111,然后数值反过来就是1.101000。根据二进制十进制的规则,它将是-0.625。

Q2:计算机中的数据和编码

计算机用户对计算机编码的一个常见误解是计算机数值计算的绝对准确性。也就是说,如果你乘以:3 (1/3),你会得到1的精确结果。但是你发现电脑没有给出这个结果,只是一个近似值,类似于0.9999222。这看起来像是系统中的一个bug,但更令人惊讶的是,是的,计算机就是这样工作的(计算机代数系统除外)。本文将详细解释这个问题。位、字节、半字节和无符号整数几乎所有的计算机用户都知道“位”的概念。在计算机中,通过改变开关来设置表达式值0或1。如果你有两个位可以选择,你可以很容易地得到四种不同的状态:00 01 10 11如果你有三个位,你可以把它们表示成八种状态:000 001 010 011 100 101 110 111每增加一位,你就会得到两倍的状态。许多计算机使用八位来表示信息,而其他计算机则有八位,如16位、32位或64位。8位通常作为一个基本单位作为一个组,并使用另一个词“字节”。计算机的处理器一次处理八位或八位的倍数的信息。内存使用一个或多个八位字节来存储数据。事实上,在某些情况下,使用四位来处理问题更方便。这种四位一组的数据通常被称为“nybble”。但事实上,“bit”比“nybble”更常用。一个字符可以编码为16种不同的情况,例如数字0到15。通常,可以使用任何序列排列来表示16种不同的状态。但是在实际应用中,通常是这样的:0000=十进制0 1000=十进制8 0001=十进制1 1001=十进制9 0010=十进制2 1010=十进制10 0011=十进制3 1011=十进制11 0100=十进制4 1100=十进制12 000。101=十进制13 0110=十进制6 1110=十进制14 0111=十进制7 1111=十进制15。这个表达式很自然,因为它符合大家熟悉的十进制数表示法。比如给定一个十进制数:7531,我们自然理解为:7 1000 5 100 3 10 1 1,或者用10的幂表示为:7 10 3 5 10 2 3 10 1 10 0 0。注意,任何数的0次方(除了0)都是1。数据中的每个数字代表一个从0到9的值,所以我们有10个不同的数字,这就是为什么我们称之为“十进制”。每个数字可以用10的某个幂来确定它的位置。听起来很复杂,但实际上并不复杂。正是当你读到一个数字并认为它是理所当然的时候,你甚至会仔细考虑它。同样,使用二进制编码,如上所述,值13的编码如下:1101每个位置有两个数字可供选择,所以我们称之为“二进制”。因此,它们的位置确定如下:1101=123122021120=18140211=13(十进制)。注意这里用的是2的幂:1,2,4和8。痴迷于计算机的人通常能记住2从2到16的幂,并不是因为他们的记忆力。但是因为他们用了很多这样的数字:20=1 28=256 21=2 29=512 22=4 210=1 024 23=8 211=2 048 24=16 212=4 096 25=32 213=8 192 26=64 21。4=16 384 27=128 215=32 768 216=65 536请注意,根据公制,值2 10=1 024通常被称为“千”,或缩写为“k”。因此,许多2的高次幂可以缩写为:2 11=2k=2 048 2 12=4k=4 096 2 13=8k=8 192 2 14=16k=16 384 2 15=32k=32 768 2 16=64k=65 536。2 20=1 024 x 1 024=1 048 576通常缩写为“m”:2 21=2m 2 22=4m而2 30曾被称为“Ji”或“g”。我们将在下面广泛使用这些修饰语。有一个很微妙的话题。
如果我们使用16位,我们可以得到65,536个不同的值,但是这些值的范围从0到65,535。人们通常从1开始计数,但计算机从0开始计数。因为对他们来说更容易。这个小问题有时会让计算机感到困惑。现在,我们有了计算位的方法:您只能在所有位的范围内执行算术运算。也就是说,如果使用16位,就不能对65 535或更大的数据进行操作,否则会出现“数据溢出”的错误。该术语表示您的操作“精度有限”。使用此编码无法表示小数。您只能使用非十进制整数。您不能用这种编码表示负数。所有的数字都是“无符号数字”。尽管有这种限制,“无符号整数”对于计算机中简单的按1计数仍然非常有用。它们对计算机来说很容易操作。计算机通常使用16位或32位无符号整数,通常称为“整数”或“长整数”。一个整数允许对从0到65 535的数据进行操作,而一个长整型允许对从0到4 294 967 295的数进行操作。 八进制和十六进制数 现在让我们讨论一些偏外的话题:对二进制数字的表示方法。计算机通常使用二进制来表达数据,但是在实际中如果使用像这样的二进制: 1001 0011 0101 0001 那将是一件痛苦的事,并且很容易出错。通常计算机使用一个基于二进制的表达方式:八进制,或更通常使用的,十六进制。 这一件听起来挺狡猾但实际上又很简单的事。如果不是这样的话,我们就不会这样使用了。在平常的十进制体系中,我们有10数字(0到9)按以下方式构成排列: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 在八进制中,我们只有八个数字(0到7)按以下方式构成排列: 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 ... 也即是说,八进制的“10”相当于十进制的“8”,八进制的“20”相当于十进制的“16”,以此类推。 在十六进制中,我们只有十六个数字(0到9,然后是从a到f)按以下方式构成排列: 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 ... 也即是说,十六进制的“10”相当于十进制的“16”,十六进制的“20”相当于十进制的“32”。 这些表示数值的方法都是表位置的系统,但是它们使用的不是像十进制那样的10,而是分别使用8和16。例如: 八进制756 = 7 × 8 2 + 5 × 8 1 + 6 × 8 0 = 7 × 64 + 5 × 8 + 6 × 1 = 448 + 40 + 6 = 十进制494 十六进制3b2 = 3 × 16 2 + 11 × 16 1 + 2 × 16 0 = 3 × 256 + 11 × 16 + 2 × 1 = 768 + 176 + 2 = 十进制946 好了,如果您还不是那么明白,不用担心。我们想说明的是,对于八进制来说,他们刚好和3位二进制有一个完美的对应关系: 000 = 八进制0 001 = 八进制1 010 = 八进制2 011 = 八进制3 100 = 八进制4 101 = 八进制5 110 = 八进制6 111 = 八进制7 类似的,一个十六进制数刚好和一个4位的二进制数对应。 0000 = 十六进制0 1000 = 十六进制8 0001 = 十六进制1 1001 = 十六进制9 0010 = 十六进制2 1010 = 十六进制a 0011 = 十六进制3 1011 = 十六进制b 0100 = 十六进制4 1100 = 十六进制c 0101 = 十六进制5 1101 = 十六进制d 0110 = 十六进制6 1110 = 十六进制e 0111 = 十六进制7 1111 = 十六进制f 因此,把一个很长的二进制数转换成一个八进制就变得很简便,例如:把二进制1001001101010001转化成八进制: 1 001 001 101 010 001 二进制 = 111521 八进制 转换成十六进制会更简单: 1001 0011 0101 0001 = 9351 十六进制 但是要把它转换成十进制(37 713)就比较麻烦了。八进制和十六进制使得转换二进制机器级的数字变得简单方便。 有符号整数和补码 在定义了无符号二进制数后,我们就要着手定义负数了,或称为“有符号整数”。最简单的一个方法是保留一个位来表示数值的符号。这个“符号位”可以位于数值的最左边,当然也可以位于数值的最右边。如果这个符号位为0,表示数值是正的,如果这个符号位为1,表示数值是负的。 这样做是可以的,虽然从人类的角度来看是最明显的解决方案,但是它对于计算机来说有可能带来一些难度。例如,这种编码使得0可以有正负两种。人们可能对此感到不可思议,但是这对计算机来说是适应的。 对计算机来说,更自然的表达方式是对给定的位数的二进制数按其范围分成两半,其中前一半用来表示负数。例如,在4位数值中,你可以得到: 0000 = 十进制0 0001 = 十进制1 0010 = 十进制2 0011 = 十进制3 0100 = 十进制4 0101 = 十进制5 0110 = 十进制6 0111 = 十进制7 1000 = 十进制-8 1001 = 十进制-7 1010 = 十进制-6 1011 = 十进制-5 1100 = 十进制-4 1101 = 十进制-3 1110 = 十进制-2 1111 = 十进制-1 现在我们得到了一个“有符号整数”数字系统,使用所知道的,为了一些不是很重要的原因,“补码”编码方式。对16位有符号数字编码来说,我们可以得到范围为-32 768到32 767的有符号数字。对一个32位的有符号编码系统来说,我们可以为从-2 147 483 648到2 147 482 647的数编码。 与只改变符号位来表示负数的编码方式相比,“补码”编码方式与之有所不同。例如对于-5来说,只对符号位编码,应该是: 1101 但是对于“补码”编码方式来说,则是: 1011 这对于符号编码来说是-3。关于为什么计算机要使用补码这种编码方式我们会在后面解释。 所以,现在我们可以以二进制方式来表示正负两种不同的数值。请记住对于一个二进制数来说,只有两种解释方式。如果在内存中有一个这样的二进制数值: 1101 -- 这只能解释为十进制的“13”或“-3”。 定点小数 这种格式通常被用于商业计算(例如在电子表格或COBOL中);因为在这里,丢弃小数位来记录金钱是不能接受的。因此了解二进制如何存贮小数是十分有用的。 首先去我们必须决定要用多少位来存贮小数部分和多少位来存储整数部分。假设我们使用32位来表示这种格式,那么我们用16位表示整数部分,16位来表示小数部分。 小数部分怎么使用呢?这沿用了表示整数的方式:如果8位接下来是4位,是2位,1位,那么当然接下来就是半位,1/4位和1/8位等等了。 例如: 整数位 小数位 0.5 = 1/2 = 00000000 00000000.10000000 00000000 1.25 = 1 1/4 = 00000000 00000001.01000000 00000000 7.375 = 7 3/8 = 00000000 00000111.01100000 00000000 有一点棘手的是,如果您要表达1/5(十进制的0.2),那您不能得到精确的数值表达方式。最好的方法只能是: 13107/65536 = 00000000 00000000.00110011 00110011 = 0.1999969... 十进制 13108/65536 = 00000000 00000000.00110011 00110100 = 0.2000122... 十进制 然而不,您不能只样做,既是你有更多的数位来表达。问题是,一些小数使用二进制的方式不能精确地表达出来。除非您使用一个特殊的办法。这个特殊的办法是分别使用两个数字来表达小数:一个是分子,一个是分母。然后您可以使用学校学习的加、减、乘、除来得到它们。然而,这些方法不能表达更高级的数字(例如平方根),或者如果这两个分母的最小公倍数很大的话,那就难以使用。这就是使用定点小数表达小数的优点。 浮点小数 当我们使用了有符号和无符号的数值表达方式时。如果遇到连32位也不足以表达的大范围的数,或也许可以表达,但我们必须为此放弃小数位时,我们可以选择的以获得更大范围的数值的表达方式的方法是使用“浮点小数”格式而抛弃“定点小数”格式。 在十进制中,我们对以下的表达方式很熟悉: 1.1030402 × 10 5 = 1.1030402 × 100000 = 110304.02 或简写成: 1.1030402E5 这表示“1.103402乘以一个1后面跟着5个零的数”。我们可以得到一个确定的称谓“尾数”的数值(1.1030402),乘以一个10的某个幂级数(E5,表示10 5 或100 000),也就是“幂级数”。如果我们使用一个负的幂级数,那就意味着乘以该正级数的倒数。例如: 2.3434E-6 = 2.3434 × 10 -6 = 2.3434 × 0.000001 = 0.0000023434 使用这种定义的好处是我们可以得到更大范围的数值,虽然尾数部分的精确度受到影响。相似的原理可以应用于二进制中为计算机使用。人们设计了很多方式,但是作常用的是由美国电器和电子工程师协会定义的一种方法。它对64位浮点格式的定义是: 11位二进制表示指数,使用“超1023”格式。这种格式使得指数可以表示为0到2047的无符号数,但是在得到真实值前必须先减去1023; 52位尾数,使用无符号数字表示; 一个符号位; 下面我们使用一个例子来了解计算机如何使用内存的8位存储这些数字: 第0位: S x10 x9 x8 x7 x6 x5 x4 第1位: x3 x2 x1 x0 m51 m50 m49 m48 第2位: m47 m46 m45 m44 m43 m42 m41 m40 第3位: m39 m38 m37 m36 m35 m34 m33 m32 第4位: m31 m30 m29 m28 m27 m26 m25 m24 第5位: m23 m22 m21 m20 m19 m18 m17 m16 第6位: m15 m14 m13 m12 m11 m10 m9 m8 第7位: m7 m6 m5 m4 m3 m2 m1 m0 其中的“S”表示符号位,“X”表示指数位(阶码?),“m”表示尾数位。一旦这些数字被读取,它将转换成: × (1 + ) × 2 - 1023 这个方式提供的数字范围为: 最大值 最小值 正数 1.797693134862231E+308 4.940656458412465E-324 负数 -4.940656458412465E-324 -1.797693134862231E+308 这种方式也定义了一些不是数字的值,例如“NaNs”(“不是一个数字”)。这通常用来返回表示数字溢出的信息。通常您不会碰到它,所以我们也不会对它进行进一步讨论。一些程序使用32位浮点小数。最普遍的是使用32位尾数,1位符号位,8位阶码和“超127”格式。它提供7位十进制数字。 第0位: S x7 x6 x5 x4 x3 x2 x1 第1位: x0 m22 m21 m20 m19 m18 m17 m16 第2位: m15 m14 m13 m12 m11 m10 m9 m8 第3位: m7 m6 m5 m4 m3 m2 m1 m0 数字转换时使用: × (1 + ) × 2 - 127 它的范围为: 最大值 最小值 正数 3.402823E+38 2.802597E-45 负数 -2.802597E-45 -3.402823E+38 通常我们可以把32位的二进制浮点数称为“单精度”浮点数,而把64位的二进制浮点数称为“双精度”浮点数。如果我们使用real的时候,通常表示双精度的浮点数;而使用float的时候,我们通常指单精度的浮点数。 但是要记住的是,位是位,它们在计算机的存储是连续的,当计算机内存中有一个64位数据时,它可能是一个双精度的浮点数,也可能是两个单精度的浮点数,或4个有符号或无符号的整数,或其它8位的数据,这取决于计算机如何读取它们。如果计算机把4个无符号整数以双精度浮点小数方式读出的话,它可以得到一个双精度浮点小数,但这个数据可能是一个垃圾数据。 所以,现在虽然我们已经解决了正、负数的存贮方式,但是对于浮点数来说,仍然存在一些与整数一样的缺陷,例如: 像整数一样,浮点数也有范围。虽然我们得到了比整数要大得多的范围,但是仍然是有限的,如果您试图把两个很大的数乘起来,您可能会得到“数据上溢”的错误。而如果您把一个小的数字除以一个函大的数字,那就可能使得指数的数值出错,出现“数据下溢”的错误。通常把最大值称为“机器无穷”,因为它是计算机所能处理的最大的数字。 另一个问题是精度。虽然您有15位的数字来表示很大的数,但是挡对它进行四则运算的时候,它们可能不给您任何提示就把一些数字丢弃。这意味着,如果您把一个很小的数加到一个很大的数值上去的时候,由于这个数字太小,以至于15位或16位的精度都不能显示它,计算机就会把这个数字丢弃。如果您在做计算的时候得到一个十分奇怪的数字,您可以需要检查您的数据范围是否合适。 这意味着,如果您做浮点计算,较小的数字很可能被丢弃了。虽然这在平常来说并不明显,但是如果您是做要求很高的数学分析工作,这些错误可能会累积起来,以至于最后得到的结果十分不准确。 这个错误对进行数学研究的人来说十分重要,他们必须对误差十分了解,以及研究一些办法来减少误差,并且应该可以估计到误差的大小。 顺便说一句,“精度”问题与“范围”问题不同,前者指的是有关尾数的表示范围,后者指的是指数的表达范围。 另外一个不太明显的误差是由于浮点数的二进制和十进制并不完全相等。如果您操作的数好是2的幂级数的倒数,例如0.75,那是用二进制可以准确的标示为0.11,因为它刚好是1/2+1/4的值。可是不幸的是,您可能通常不会得到如此恰到好处的数字,这就是说,计算机会把一些数字丢掉,例如要表示0.1,只能使用无穷循环的二进制小数0.000110011……表示了。 如果您对这部分内容不理解,别担心。这里的要点是,计算机不是万能的,它只是一部机器,并要符合一定的规则和受到一定的限制。虽然很多人对计算机抱有孩子似的信任,但是在计算机虽好的解决方法下也有一些不可避免的不精确。 编程语言中的数 对于低级语言的编程者来说,他们要担心有符号和无符号、定点和浮点数的运算。他们必须使用十分不同的代码来实现操作。 但是,对高级语言的编程者来说,诸如LISP和 Python 提供了一些列诸如“有理数”、“复数”之类的抽象数据类型。而他们可以断言他们的系统可以使用数学操作做正确的运算。由于操作符重载,数学运算可以应用于任何数字——无论是有符号的、无符号的、有理数、定点小数、浮点小数或复数。 文本编码:ASCII和字符串 现在我们已经得到不同的方法来存储数据了,那么文本呢?我们怎么存储姓名、地址或写给朋友的信件呢? 当然,如果您还记得位是位的话,我们没有理由不能使用位来表达字母“A”或“?”获“Z”之类的。因为很多计算机每次处理一个字节,所以使用单字节的数据来表达单个字母会很方便。我们可以使用这个: 0100 0110 (hex 46) 来表示字母“F”。计算机使用这样的“字符编码”来向显示程序传送要求的文本。 下面是一个用来存储西方字母的标准二进制编码,就是通常所说的“美国信息交换标准码”(英文简称“ ASCII ”),下面的编码为ASCII编码,使用“d”表示十进制编码,“h”表示十六进制代码,“o”表示八进制代码: ASCII码表 ______________________________________________________________________ ch ctl d h o ch d h o ch d h o ch d h o ______________________________________________________________________ NUL ^@ 0 0 0 sp 32 20 40 @ 64 40 100 " 96 60 140 SOH ^A 1 1 1 ! 33 21 41 A 65 41 101 a 97 61 141 STX ^B 2 2 2 " 34 22 42 B 66 42 102 b 98 62 142 ETX ^C 3 3 3 # 35 23 43 C 67 43 103 c 99 63 143 EOT ^D 4 4 4 $ 36 24 44 D 68 44 104 d 100 64 144 ENQ ^E 5 5 5 % 37 25 45 E 69 45 105 e 101 65 145 ACK ^F 6 6 6 & 38 26 46 F 70 46 106 f 102 66 146 BEL ^G 7 7 7 ` 39 27 47 G 71 47 107 g 103 67 147 BS ^H 8 8 10 ( 40 28 50 H 72 48 110 h 104 68 150 HT ^I 9 9 11 ) 41 29 51 I 73 49 111 i 105 69 151 LF ^J 10 a 12 * 42 2a 52 J 74 4a 112 j 106 6a 152 VT ^K 11 b 13 _ 43 2b 53 K 75 4b 113 k 107 6b 153 FF ^L 12 c 14 44 2c 54 L 76 4c 114 l 108 6c 154 CR ^M 13 d 15 _ 45 2d 55 M 77 4d 115 m 109 6d 155 SO ^N 14 e 16 . 46 2e 56 N 78 4e 116 n 110 6e 156 SI ^O 15 f 17 /47 2f 57 O 79 4f 117 o 111 6f 157 DLE ^P 16 10 20 0 48 30 60 P 80 50 120 p 112 70 160 DC1 ^Q 17 11 21 1 49 31 61 Q 81 51 121 q 113 71 161 DC2 ^R 18 12 22 2 50 32 62 R 82 52 122 r 114 72 162 DC3 ^S 19 13 23 3 51 33 63 S 83 53 123 s 115 73 163 DC4 ^T 20 14 24 4 52 34 64 T 84 54 124 t 116 74 164 NAK ^U 21 15 25 5 53 35 65 U 85 55 125 u 117 75 165 SYN ^V 22 16 26 6 54 36 66 V 86 56 126 v 118 76 166 ETB ^W 23 17 27 7 55 37 67 W 87 57 127 w 119 77 167 CAN ^X 24 18 30 8 56 38 70 X 88 58 130 x 120 78 170 EM ^Y 25 19 31 9 57 39 71 Y 89 59 131 y 121 79 171 SUB ^Z 26 1a 32 : 58 3a 72 Z 90 5a 132 z 122 7a 172 ESC ^[ 27 1b 33 ; 59 3b 73 [ 91 5b 133 { 123 7b 173 FS ^\ 28 1c 34 62 3e 76 ^ 94 5e 136 ~ 126 7e 176 US ^_ 31 1f 37 ? 63 3f 77 _ 95 5f 137 DEL 127 7f 177 ______________________________________________________________________ 上面这个列表的最左边有一个些奇怪的字符,例如“FF”和“BS”,这些都不是文本字符。相反,它们是控制字符,也就是说当这些字符发送到特定的设备时,它将产生一些动作。例如“FF”表示换页,或弹出;“BS”表示退格,而“BEL”表示一个响声。在一个文本编辑器中,它们会显示成一个白色或黑色的方块,或笑脸、音符或其它一些奇怪的符号。要打出这些字符,可以使用CTRL键和一个合适的代码。例如同时按住“CTRL”和“G”,或简写成“CTRL-G”或“^G”可以打出一个BEL字符。 上面这个ASCII码表示定义了128个字符,这意味着ASCII码只需要7位。但是,很多计算机都以字节为单位存储信息。这个额外的一位可以定义第二个128个字集,一个“扩展”字集。 在实际中,有很多不同的“扩展”字集,提供很多例如数学符号等的符号或非英语字符。这个扩展字集并没有进行标准化,并经常会引起混淆。 这个表格强调了这篇文章的主题:位就是位。这样的话,您可以使用位来表示字符。您可以把特殊的代码描述成特殊的十进制、八进制和十六进制,但是它们仍然是相同的代码。这些数值的表达,无论是十进制、八进制或十六进制,都只是相同的位的表达。 当然,您可能在一段话中表达很多的字符,例如: Tiger tiger burning bright! 这只是简单的替换成ASCII码,表示成: 54 69 67 65 72 2c 20 74 69 67 65 72 20 62 75 ... 计算机把这种ASCII“字符串”以连续空间的“数组”来存储。一些应用程序可以包括一个二进制数值表示字符串的长度,但是更通常的做法是使用一个表示结尾的字符NULL(ASCII表中的0字符〕表示字符串的结束。 请参看:

Q3:定点小数补码编码[X]补=1.011000B的真值是多少?

小数点位于符号位之后 即为纯小数 且是负数将补码减一得 1. 010111 再将数值部分取反得1 .101000根据二进制化十进制的法则 得到 - 0. 625

Q4:二进制数、八进制数、十六进制数转十进制数 用电脑上的计算机怎么算

告诉你一种简单易懂的方法。我学的时候就是用的这种方法的。首先将十六或八进制的数化成二进制。十六进制的数化二进制数就是1位换4位。如:十六的9——1001(8+1=9) A——1010(8+2=10) 3——11(2+1=3)2A——10 1010(2 8+2=10) 就这样8 4 2 1的类推. 而八进制换二进制就是1位换3位。和十六进制一样。只不过他是按4 2 1 这三位来推。然后二进制换十进制就简单了。如111001011共9位最高位就是2的8次方,因为最后的一个1是2的0次方。对应的:2的8次方为256、7次方为128、6次方为64、5次方和4次方为0则没有、3次方为8、2次方为0没有、1次方为4、0次方为1. 然后相加:256+128+64+8+4+1=461.所以二进制数111001011就等于十进制数461.

Q5:计算机组成原理

计算机组成原理三、名词解释1.计算机系统:由硬件和软件两大部分组成,有多种层次结构。2.主机:CPU、存储器和输入输出接口合起来构成计算机的主机。3.主存:用于存放正在访问的信息4.辅存:用于存放暂时不用的信息。5.高速缓存:用于存放正在访问信息的付本。6.中央处理器:是计算机的核心部件,由运算器和控制器构成。7.硬件:是指计算机实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成。软件:指看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。8.系统软件:又称系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。 应用软件:又称应用程序,它是用户根据任务需要所编制的各种程序。9.源程序:通常由用户用各种编程语言编写的程序。 目的程序:由计算机将其翻译机器能识别的机器语言程序。10.总线:是连接多个部件的信息传输线,是各部件共享的传输介质。11.系统总线:是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。 通信总线:是指用于计算机系统之间或者计算机系统与其他系统(如控制仪表、移动通信)之间的通信的线路。 按传送方式分并行和串行。串行通信是指数据在单条1位宽的传输线上,一位一位的按顺序分时传送。并行通信是指数据在多条并行1位宽的传输线上,同时由源传送到目的地。12.带宽:单位时间内可以传送的最大的信息量。13.机器字长:是指CPU一次并行处理数据的位数,通常与CPU的寄存器位数有关。14.主存容量:是指主存中存放二进制代码的总位数。15.机器数:符号位数字化,0代表正数,1代表负数。16.定点数:小数点固定在某一位位置的数。17.浮点数:小数点的位置可以浮动的数。18.补码:带符号数据表示方法之一,正数的反码和原码相同,负数的反码是将二进制按位取反后在最低位再加1.19.溢出:在计算机中,超出机器字长,发生错误的结果。20.非编码键盘:采用软件判断键是否按下及设键、译键、计算键值的方法的键盘。21.A/D转换器:它能将模拟量转换成数字量,是计算机的输入设备。22.I/O接口:指主机与I/O设备之间设置的一个硬件电路及器相应的软件控制。23.端口:指接口电路中的一些寄存器,用来存放数据信息、控制信息和状态信息。24.中断:计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行转向对这些异常情况或特殊请求处理,处理结束后再返回到现行程序的间断处,继续执行源程序。25.中断源:凡能向CPU提出中断请求的各种因素统称为中断源。26.中断嵌套:计算机在处理中断的过程中,有可能出现新的中断请求,此时CPU暂停现行中断服务程序,转向新的中断请求,这种现象称为中断嵌套。27.优先级:为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别。28.DMA方式:用硬件在主存与外设之间直接进行数据传送,不须CPU,用软件控制。29.指令系统:将全部机器指令的集合称为机器的指令系统。30.寻址方式:是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。31.指令周期:完成一条指令的时间,由若干机器周期组成。 机器周期:完成摸个独立操作,由若干时钟周期组成。 时钟周期:最基本时间单位,由主频决定。32.微操作:在微程序控制器中,执行部件接受微指令后所进行的最基本的操作。33.微指令:控制器存储的控制代码,分为操作控制部分和顺序控制部分,由微命令组成。34.微程序:存储在控制存储器中的完成指令功能的程序,由微指令组成。35.控制存储器:CPU内用于存放实现指令系统全部指令的微程序的只读存储器。二、计算3.14. 设总线的时钟频率为8MHZ,一个总线周期等于一个时钟周期。如果一个总线周期中并行传送16位数据,试问总线的带宽是多少?解:由于:f=8MHz,T=1/f=1/8M秒,因为一个总线周期等于一个时钟周期所以:总线带宽=16/(1/8M) = 128Mbps=16MBps3.15. 在一个32位的总线系统中,总线的时钟频率为66MHZ,假设总线最短传输周期为4个时钟周期,试计算总线的最大数据传输率。若想提高数据传输率,可采取什么措施?解:总线传输周期=4*1/66M秒总线的最大数据传输率=32/(4/66M)=528Mbps=66MBps若想提高数据传输率,可以提高总线时钟频率、增大总线宽度或者减少总线传输周期包含的时钟周期个数。3.16. 在异步串行传送系统中,字符格式为:1个起始位、8个数据位、1个校验位、2个终止位。若要求每秒传送120个字符,试求传送的波特率和比特率。解:一帧包含:1+8+1+2=12位 故波特率为:(1+8+1+2)*120=1440bps 比特率为:8*120=960bps4.5. 什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?解:存储器的带宽指单位时间内从存储器进出信息的最大数量。存储器带宽 = 1/200ns ×32位 = 160M位/秒 = 20MB/秒(注:1ns=10-9s)4.7. 一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位解:地址线和数据线的总和 = 14 + 32 = 46根;选择不同的芯片时,各需要的片数为:1K×4:(16K×32) /(1K×4) = 16×8 = 128片2K×8:(16K×32) /(2K×8) = 8×4 = 32片4K×4:(16K×32) /(4K×4) = 4×8 = 32片16K×1:(16K×32)/(16K×1) = 1×32 = 32片4K×8:(16K×32)/(4K×8) = 4×4 = 16片8K×8:(16K×32) /(8K×8) = 2×4 = 8片6.4. 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,-87解:真值与不同机器码对应关系如下:真值 -13/64 -87原码 1.001 1010 1,101 0111补码 1.1100110 1,0101001反码 1.1100101 1,01010006.5. 已知[x]补,求[x]原和x。 [x1]补=1.1100; [x2]补=1.1001; [x4]补=1.0000; [x5]补=1,0101; [x6]补=1,1100; [x8]补=1,0000; 解:[x]补与[x]原、x的对应关系如下:真值 -1/4 -7/16 -1 -11 -4 -16[x]补 1.1100 1.1001 1.0000 1,0101 1,1100 1,0000[x]原 1.0100 1.0111 无 1,1011 1,0100 无x -0.0100 -0.0111 -1.0000 -1011 -0100 -100006.9. 当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)? 解:真值和机器数的对应关系如下: 原码 补码 移码 无符号数9BH -27 -101 +27 155 原码 补码 移码 无符号数FFH -128 -1 +128 2566.12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出-27/1024、-86.5所对应的机器数。要求如下:(1)阶码和尾数均为原码。(2)阶码和尾数均为补码。(3)阶码为移码,尾数为补码。 解:据题意画出该浮点数的格式:阶符1位 阶码4位 数符1位 尾数10位 将十进制数转换为二进制: x1= -27/1024= -0.0000011011B = 2-5*(-0.11011B) x3=-86.5=-1010110.1B=27*(-0.10101101B)则以上各数的浮点规格化数为:(1)[x1]原=1,0101;1.110 110 000 0 [x3]原=0,0111;1.101 011 010 0(2)[x1]补=1,1011;1.001 010 000 0 [x3]补=0,0111;1.010 100 110 0(3)[x1]移补=0,1011;1.001 010 000 0 [x3]移补=1,0111;1.010 100 110 06.19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。 (2)A=19/32,B=-17/128,求A-B。 (4)A=-87,B=53,求A-B。解:(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B [A]补=00.100 1100, [B]补=11.110 1111 , [-B]补=00.001 0001 [A-B]补=[A]补+[-B]补 =00.1001100 + 00.0010001 =00.1011101 ——无溢出 A-B= 0.101 1101B = 93/128B (4)A= -87= -101 0111B, B=53=110 101B [A]补=11, 010 1001, [B]补=00, 011 0101, [-B]补=11, 100 1011 [A-B]补=[A]补+[-B]补 = 11,0101001 + 11,1001011 = 10,1110100 —— 溢出6.21. 用原码加减交替法和补码加减交替法计算x÷y。 (2)x=-0.10101, y=0.11011; (4)x=13/32, y= -27/32。(2)[x]原=1.10101 x*=0.10101 [X*]补=1.01011 XfYf=1 0.10101 +1.00101 1.11010 0 1.10100 +0.11011 0.01111 0 0.11110 +1.00101 0.00011 011 0.00110 +1.00101 1.01011 0110 0.10110 +0.11011 1.10001 01100 1.00010 +0.11011 1.11101 011000 [y]原=0.11011 y*=0.11011 [Y*]补=0.11011 [-y*]补=1.00101[x/y]原=1.11000(4)做法相同,打表格太累,仅给出结果。[x/y]原=1.01111三、应用4.14. 某8位微型机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问: (1)该机所允许的最大主存空间是多少?(2)若每个模块板为32K×8位,共需几个模块板?(3)每个模块板内共有几片RAM芯片?(4)共有多少片RAM?(5)CPU如何选择各模块板?解:(1)该机所允许的最大主存空间是:218 × 8位 = 256K×8位 = 256KB(2)模块板总数 = 256K×8 /32K×8 = 8块(3)板内片数 = 32K×8位 /4K×4位 = 8×2 = 16片(4)总片数 = 16片×8 = 128片(5)CPU通过最高3位地址译码输出选择模板,次高3位地址译码输出选择芯片。地址格式分配如下: 4.29. 假设CPU执行某段程序时共访问Cache命中4800次,访问主存200次,已知Cache的存取周期为30ns,主存的存取周期为150ns,求Cache的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少倍?解:Cache被访问命中率为:4800/(4800+200)=24/25=96%则Cache-主存系统的平均访问时间为:ta=0.96*30ns+(1-0.96)*150ns=34.8nsCache-主存系统的访问效率为:e=tc/ta*100%=30/34.8*100%=86.2%性能为原来的150ns/34.8ns=4.31倍,即提高了3.31倍。例7.2设相对寻址的转移指令占3个字节,第一字节为操作码,第二,三字节为相对位移量(补码表示)。而且数据在存储器中采用以低字节地址为字地址的存放方式。每当CPU从存储器取出一个字节时,即自动完成(PC)+1 PC。(1) 若PC当前值为240(十进制),要求转移到290(十进制),则转移指令的第二、三字节的机器代码是什么?(2) 若PC当前值为240(十进制),要求转移到200(十进制),则转移指令的第二、三字节的机器代码是什么?解:(1)PC当前值为240,该指令取出后PC值为243,要求转移到290,即相对位移量为290-243=47,转换成补码为2FH。由于数据在存储器中采用以低字节地址为字地址的存放方式,故该转移指令的第二字节为2FH,第三字节为00H。(2)PC当前值为240,该指令取出后PC值为243,要求转移到200,即相对位移量为200-243=-43,转换成补码为D5H。由于数据在存储器中采用以低字节地址为字地址的存放方式,故该转移指令的第二字节为D5H,第三字节为FFH。例7.3一条双字长直接寻址的子程序调用指令,其第一个字为操作码喝寻址特征,第二个字为地址码5000H。假设PC当前值为2000H,SP的内容为0100H,栈顶内容为2746H,存储器按字节编址,而且进栈操作时执行(SP)-△-P,后存入数据。试回答下列几种情况下,PC、SP及栈顶内容各为多少?(1) CALL指令被读取前。(2) CALL指令被执行后。(3) 子程序返回后。解CALL指令被读取前,PC=2000H,SP=0100H,栈顶内容为2746H。(1) CALL指令被执行后,犹豫存储器按字节编制,CALL指令供占4个字节,故程序断电2004H进栈,此时SP=(SP)-2=00FEH,栈顶内容为2004H,PC被更新为子程序入口地址5000H。(2) 子程序返回后,程序断点出栈,PC=2004H,SP被修改为0100H,栈顶内容为2746H。7.6某指令系统字长为16位,地址码取4位,试提出一种方案,使该地址系统有8条三地址指令、16条二地址指令、100条一地址指令。解:OP A2 A1 A0 三地址指令8条0000 ••• 0111 OP A1 A0 二地址指令16条10000000 ••• 10001111 OP A0 一地址指令100条110000000000 110001100011 7.7设指令字长为16位,采用扩展操作码技术,每个操作码的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令。解:(24-3)*26=3*64=192条7.8某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址,一地址和二地址三种格式,若零地址指令有M种,以抵制指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?解:1)若采用定长操作码时,二地址指令格式如下:OP(4位) A1(6位) A2(6位)设二地址指令有K种,则:K=24-M-N当M=1(最小值),N=1(最小值)时,二地址指令最多有:Kmax=16-1-1=14种2)若采用变长操作码时,二地址指令格式仍如1)所示,但操作码长度可随地址码的个数而变。此时,K= 24 -(N/26 + M/212 );当(N/26 + M/212 )1时(N/26 + M/212 向上取整),K最大,则二地址指令最多有:Kmax=16-1=15种(只留一种编码作扩展标志用。)9.5设机器A的CPU主频为8MHz,机器周期为4个时钟周期,且该机的平均指令执行速度是0.4MIPS,试求该机的平均指令周期和机器周期,每个指令周期中含几个机器周期?如果机器B的CPU主频为12MHz,且机器周期也含有4个时钟周期,试问B机的平均指令执行速度为多少MIPS?A.CLK=8MHz T=1/8MHz=0.125us 机器周期=4*T=0.5us 因为执行速度为0.4MIPS 所以平均指令周期=1/0.4MIPS=2.5us 2.5us/0.5us=5个 所以每个指令含有5条机器指令B.T=1/f=1/12MHz=1/12us 机器指令=4*T=1/3us 指令周期=5*1/3=5/3us平均指令执行速度 1/(5/3)=0.6MIPS9.6设某计算机的CPU主频为8MHz,每个机器周期平均含2个时钟周期,每条指令平均有4个机器周期,试问该计算机的平均指令执行速度为多少MIPS?若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令平均有4个机器周期,试问B机的平均指令执行速度为多少MIPS?1.CLK=8MHz 平均指令执行速度1/(1/8M*2*4)=1MIPS2.指令周期=4*4*1/8=2us 执行速度=1/(1/8M*4*4)=0.5MIPS9.7某CPU的主频为10MHz,若已知每个机器周期平均含有4个时钟周期,该机的平均指令执行速度为1MIPS,试求该机的平均指令执行速度为多少MIPS?若CUP主频不变,但每个机器周期平均含有4个时钟周期,每条指令平均有4个机器周期,则该机的平均指令执行速度又是多少MIPS?由此可得出什么结论1.平均指令周期=1/1MIPS=1us T=1/f=0.1us T机=4*T=0.4us因为1us/0.4us=2.5 所以每个指令包含2.5个机器周期2.T=0.4us 速度=1/(0.4*2.5*4)=0.25MIPS3.因为速度=0.8MIPS 所以T指=1/0.8us 因为T指=4*2.5*T 所以T=1/8us 所以 f=1/T=8MHz 四、简答1.冯诺依曼机主机主要特点。○1计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。○2.指令和数据一同等地位存放于存储器内,并可按地址寻访。○3.指令和数据均用二进制表示。○4.指令由操作吗和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。○5.采用存储控制原理,指令在存储器内按顺序存放。通常指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。○6.机器以运算器为中心,输入输出设备与存储器间的数据传说通过运算器完成。2.计算机硬件主要技术指标,软件定义与分类。 计算机硬件主要技术指标:机器字长、存储容量、运算速度、主频等。 软件定义:看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。 分类:系统软件和应用软件。3.计算机组成部分与个部分作用。 运算器:用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。 存储器:用来存放数据和程序。 控制器:用来控制、指挥程序和数据的输入、运行以及处理器运算结果。 输入设备:用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。 输出设备:可将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等。4.总线定义与分类方法,系统总线定义与分类方法。 总线 定义:总线是连接多个部件的信息传输线,是各部件共享的传输介质。 分类:片内总线 系统总线 通信总线 系统总线定义:系统总线是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。 分类: 数据总线 地址总线 控制总线5.什么是总线标准,目前流行的总线标准有哪些。 所谓总线标准可视为系统与各模块,模块与模块之间的一个互连的标准界面。 ISA总线、EISA总线、PCI总线、RS—232C总线、IEEE-488(并行通信总线又称GP-IP总线)USB总线。6.三级存储器系统中各级存储器特点与用途,分哪两个层次。○1主存 特点:随机访问、速度快。容量大。用途:存放CPU使用的程序和数据。 辅存 特点:容量大、速度慢、价格低、可脱机保存信息。用途:存放大量后备数据缓存 特点:速度快、容量小、价格高 用途:用于主存与辅存之间作为缓冲,正在使用的程序和数据的付本。 ○2缓存-----主存层次和主存---辅村层次。7.半导体存储器RAM与ROM特点与用途。RAM特点:可读可写掉电后信息丢失,存临时信息。用途:主要做内存ROM特点:只读不写掉电后信息不丢失,存长期信息。用途:主要做控制存储器8.动态RAM与静态RAM特点与用途,DRAM刷新方式与主要优点。静态RAM特点:信息读出后,仍保持其原有状态,不需要再生。用途:用于Cache动态RAM特点:靠电容存储电荷的原理来寄存信息。用途:组成内存/主存。DRAM刷新方式 集中刷新:集中刷新是在规定的一个刷新周期内对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读写操作。 分散刷新:分散刷新是指对每行存储单元的刷新分散到每个存储周期内完成。异步刷新:异步刷新是前两种方式的结合,它即可缩短“死时间”,又充分利用最大刷新间隔2ms的特点。优点:单个MOS管组成,集成度高,速度较SRAM慢,价格低,9.Cache工作原理特点,地址映射方式与替换算法。原理:利用程序访问的局部性,近期用到信息存于cache。地址映射方式:直接映射、全相联映射、组相联映射、替换算法:先进先出算法(FIFO)、近期最少使用算法(LRU)、随机法。10.主机与外设交换信息采用中断与DMA方式特点与应用场合。中断方式:特点:CPU与外设并行工作,效率高应用场合:管理多种外设并行工作、进行实时处理、进行故障自动处理DMA方式:特点:○1从数据传送看,程序中断方式靠程序传送,DMA方式靠硬件传送。○2从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应。○3程序中断方式有处理异常事件能力,DMA方式没有这种能力,主要用于大批数据的传送,如硬盘存取、图像处理、高速数据采集系统等,可提高数据吞吐量。○4程序中断方式需要中断现行程序,故需保护现场;DMA方式不中断现行程序,无须保护现场。○5DMA的优先级比程序中断的优先级高。应用场合:高速设备 如硬盘11.I/O端口与接口的区别,I/O接口分类方法。端口:接口内部寄存器有I/O地址号。一般分为数据口、命令口和状态口。接口:若干端口加上相应的控制电路组成。接口分类:按数据传送方式分串行接口和并行接口 按功能选择的灵活性分为可编程接口和不可编程接口 按通用性分为通用接口和专用接口 按数据传送的控制方式分为程序型接口和DMA接口。12.中断处理过程分成哪两个阶段各完成哪些任务响应阶段:关中断、保护断点地址、转入中断服务入口地址处理阶段:保护现场、执行用户编写的中断服务程序、恢复现场。13.与中断方式比较MDA方式主要特点是什么。 ○1从数据传送看,程序中断方式靠程序传送,DMA方式靠硬件传送。○2从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应。○3程序中断方式有处理异常事件能力,DMA方式没有这种能力,主要用于大批数据的传送,如硬盘存取、图像处理、高速数据采集系统等,可提高数据吞吐量。○4程序中断方式需要中断现行程序,故需保护现场;DMA方式不中断现行程序,无须保护现场。○5DMA的优先级比程序中断的优先级高。14.什么是寻址方式,数据寻址方式有哪几种。寻址方式:是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。数据寻址方式:立即寻址、直接寻址、隐含寻址、间接寻址、寄存器寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址、堆栈寻址。15.RISC主要特点与CISC相比较RISC主要优点。特点: 选用使用频率较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现;指令长度固定指令格式种类少,寻址方式种类少;只有取数/存数指令访问存储器,其余指令的操作都在寄存器内完成;采用流水线技术,大部分指令在一个时钟周期内完成;控制器采用组合逻辑控制,不用微程序控制;采用优化的编译程序。 ○1充分利用VLSI芯片的面积。 ○2提高计算机运算速度。○3便于设计可降低成本提高可靠性。○4有效支持高级语言程序。16.组合逻辑与微程序设计主要特点与应用。组合逻辑:特点:速度快、复杂不灵活。应用:适用于RISC机。微程序:特点:引入程序设计与存储逻辑技术,硬件软化,把一条机器指令用一段微程序来实现,存放控制存储器CM中。应用:系列机。17.什么是指令周期、机器周期、时钟周期 三者的关系如何。 指令周期:完成一条指令的时间,由若干机器周期组成。机器周期:完成摸个独立操作,由若干时钟周期组成。时钟周期:最基本时间单位,由主频决定。关系:时钟周期是最基本时间单位,由若干时钟周期组成机器周期,由若干机器周期组成指令周期。

Q6:十六进制怎么运算成十进制

十六进制数为:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f,其中a、b、c、d、e、f分别对应10、11、12、13、14、15。

版权声明:admin 发表于 2021年10月24日 下午7:18。
转载请注明:小数的原码反码补码怎么求,负小数的补码 | 热豆腐网址之家

相关文章