浮点数表示方法总结
- 格式:doc
- 大小:591.60 KB
- 文档页数:3
c语言浮点数合法规则C语言浮点数合法规则一、引言在C语言中,浮点数是一种用于表示带小数部分的数值的数据类型。
浮点数的合法规则是指在C语言中使用浮点数时需要遵守的一些规则,以确保浮点数的正确使用和计算。
本文将详细介绍C语言浮点数的合法规则。
二、浮点数的表示C语言中的浮点数使用单精度(float)和双精度(double)两种类型进行表示。
单精度浮点数使用32位存储空间,双精度浮点数使用64位存储空间。
浮点数的表示遵循IEEE 754标准,其中包括符号位、指数位和尾数位。
三、浮点数的合法格式1. 整数形式:例如,3、-5等整数可以直接表示为浮点数。
2. 小数形式:例如,3.14、-0.5等小数可以直接表示为浮点数。
3. 科学计数法形式:例如,1.23e-4表示为1.23乘以10的负4次方。
4. 0和-0:0和-0都是合法的浮点数表示。
5. 正无穷和负无穷:表示非常大或非常小的数值。
6. NaN:表示非数值,例如0/0的结果。
四、浮点数的合法操作1. 四则运算:加法、减法、乘法和除法等四则运算都是合法的浮点数操作。
2. 比较运算:等于、不等于、大于、小于、大于等于和小于等于等比较运算都是合法的浮点数操作。
3. 赋值操作:将一个浮点数赋值给另一个浮点数变量是合法的操作。
4. 数学函数:C语言提供了一系列的数学函数,如sin、cos、sqrt 等,这些函数的参数和返回值都可以是浮点数。
五、浮点数的合法范围C语言中的浮点数具有一定的范围限制。
单精度浮点数的范围约为-3.4e38到 3.4e38之间,双精度浮点数的范围约为-1.7e308到1.7e308之间。
六、浮点数的精度问题由于浮点数的表示方式是近似表示,因此在进行浮点数运算时可能会出现精度问题。
例如,0.1在二进制中无法精确表示,因此在进行0.1的加法和减法运算时可能会产生一些误差。
为了避免精度问题,可以使用整数进行计算,或使用浮点数的四舍五入函数进行处理。
python里float的用法1.浮点数的概念浮点数(fl oa t)是一种数据类型,在Py t ho n中用于表示实数(包括整数和小数)。
浮点数可以进行数学运算,包括加减乘除等操作。
2.创建浮点数在P yt ho n中,可以直接使用浮点数的字面值来创建该类型的变量。
例如:```p yt ho nx=3.14y=2.0```3.浮点数的运算浮点数可以进行常见的数学运算,包括加法、减法、乘法和除法。
例如:```p yt ho nx=3.14y=2.0加法示例r e su lt=x+y输出:5.14减法示例r e su lt=x-y输出:1.14乘法示例r e su lt=x*y输出:6.28除法示例r e su lt=x/y输出:1.57```4.浮点数的精度由于浮点数是一种近似表示,所以在进行运算时可能存在精度问题。
例如:```p yt ho nx=0.1y=0.2r e su lt=x+y输出:0.30000000000000004```为避免精度问题,可以使用适当的方法进行处理,如四舍五入等。
5.浮点数的转换在Py th on中,可以通过使用内置函数进行浮点数的类型转换。
例如,可以将整数转换为浮点数,或将浮点数转换为整数。
示例如下:```p yt ho nx=3y=2.5转换为浮点数r e su lt=f lo at(x)输出:3.0转换为整数r e su lt=i nt(y)输出:2```6.浮点数的常用方法浮点数对象还提供了一些常用的方法,可以对其进行操作或获取相关信息。
例如,可以调用浮点数对象的`rou n d()`方法来进行四舍五入。
示例如下:```p yt ho nx=3.14159四舍五入r e su lt=r ou nd(x,2)输出:3.14```7.浮点数的比较在P yt ho n中,对浮点数进行比较时可能存在一些意想不到的结果,这是由于浮点数的表示精度问题所导致的。
应该使用特定的方法来比较浮点数的大小,如使用`m at h.is cl os e()`函数或设定一个误差范围。
浮点数计算方式浮点数是计算机中用来表示实数的一种数据类型。
它由一个小数部分和一个指数部分组成,可以表示非常大或非常小的数值范围。
浮点数的计算方式是基于浮点数的表示规范和运算规则进行的。
本文将介绍浮点数的计算方式,并探讨其中的一些注意事项。
一、浮点数的表示方式在计算机中,浮点数通常采用IEEE 754标准进行表示。
根据该标准,浮点数由三部分组成:符号位、指数位和尾数位。
其中,符号位用于表示浮点数的正负性,指数位用于表示浮点数的指数部分,尾数位用于表示浮点数的小数部分。
通过这种方式,计算机可以表示非常大或非常小的实数。
二、浮点数的四则运算浮点数的四则运算(加法、减法、乘法和除法)是基于IEEE 754标准进行的。
在进行浮点数的四则运算时,需要注意以下几点:1. 精度丢失:由于浮点数的表示方式是有限的,所以在进行浮点数的运算时,可能会出现精度丢失的情况。
这是因为某些实数无法准确表示为有限位数的浮点数。
因此,在进行浮点数计算时,应注意精度丢失可能会产生的误差。
2. 舍入误差:由于浮点数的表示方式是基于二进制的,而实数是十进制的,所以在进行浮点数计算时,可能会出现舍入误差。
这是因为某些十进制数无法准确表示为二进制数。
因此,在进行浮点数计算时,应注意舍入误差可能会对计算结果产生影响。
3. 无穷大和NaN:浮点数的运算结果可能会出现无穷大(Infinity)或不确定值(NaN)。
无穷大表示计算结果超出了浮点数的表示范围,而NaN表示计算结果无法确定。
在进行浮点数计算时,应注意处理这些特殊情况,以避免出现错误结果。
三、浮点数计算中的问题和解决方法在进行浮点数计算时,可能会遇到一些问题,如计算结果不准确、计算速度较慢等。
为了解决这些问题,可以采取以下方法:1. 增加计算精度:可以增加浮点数的位数,从而提高计算精度。
例如,可以使用双精度浮点数(64位)替代单精度浮点数(32位),以提高计算精度。
2. 使用精确计算:可以使用精确计算方法,如使用有理数进行计算,从而避免浮点数计算中的精度丢失和舍入误差。
浮点数的精度与标度-概述说明以及解释1.引言1.1 概述概述浮点数是计算机科学中一种常见的数值数据类型,用于表示实数或小数。
它的精度和标度是浮点数操作中两个重要的概念。
精度指的是数值的有效位数,而标度则表示小数点的位置。
本文将探讨浮点数的精度和标度对计算结果的影响。
首先,我们将介绍浮点数的定义和表示方式,以便读者对其有一个基本的认识。
然后,我们将详细讨论浮点数的精度和标度的定义和计算方法,并说明它们是如何相互关联的。
在正文部分,我们将重点讨论浮点数的精度。
精度取决于浮点数的位数和指数范围,它决定了浮点数能够表示的最大有效位数。
我们将探讨浮点数在计算中可能出现的精度丢失问题,并提供一些解决方案和注意事项。
接下来,我们将转向浮点数的标度。
标度表示小数点相对于浮点数的位置,决定了浮点数的大小范围。
我们将讨论标度的影响以及与精度的关系,同时介绍一些常见的浮点数运算问题,并提供一些解决方法。
最后,在结论部分,我们将总结浮点数的精度与标度的关系,并强调它们对浮点数应用的重要性。
我们还将讨论浮点数精度与标度对于科学计算和计算机图形学等领域的影响,以及在实际应用中需要注意的一些问题。
通过深入理解和掌握浮点数的精度与标度,读者将能够更好地理解和应用浮点数,在计算中避免丢失精度或产生错误结果的情况,并优化计算性能。
1.2文章结构1.2 文章结构本文主要围绕浮点数的精度与标度展开讨论。
为了清晰地呈现这个主题,本文将分为三个主要部分:引言、正文和结论。
在引言中,我们将简要介绍浮点数的概念和其在计算机中的表示方式。
我们将对浮点数的定义和表示方式进行阐述,以便读者能够更好地理解浮点数的精度与标度的概念。
接着,在正文部分,我们将详细讨论浮点数的精度。
我们将探讨浮点数的精度受限于计算机内部二进制表示的有限位数,导致浮点数在进行运算时存在舍入误差的问题。
我们还将介绍浮点数的精度与计算机体系结构、编程语言和算法选择等因素之间的关系。
C语言中f l o a t的用法举例一、概述在C语言中,fl oa t是一种用于表示浮点数的数据类型。
本文将通过一系列实例,详细介绍f lo at的用法及其常见应用场景。
二、基本语法在C语言中,我们可以通过以下方式声明和初始化fl oat类型的变量:```cf l oa tn um1=3.14;f l oa tn um2=2.71828;```三、浮点数运算与整数类型不同,浮点数类型可以进行复杂的数学运算,包括加减乘除和其他高级运算。
下面是一些示例:-加法运算:```cf l oa ts um=n um1+num2;```-减法运算:```cf l oa td if fe re nc e=n u m1-n um2;```-乘法运算:```cf l oa tp ro du ct=n um1*nu m2;```-除法运算:```cf l oa tq uo ti en t=num1/n um2;```四、f l o a t与整数的互相转换有时候我们需要在fl o at和整数之间进行转换,C语言提供了一些函数来实现这些转换。
-f lo at转换为整数:```cf l oa tn um=3.14;i n ti nt Nu m=(i nt)nu m;```-整数转换为fl oa t:```ci n ti nt Nu m=5;f l oa tn um=(fl oa t)i n tN um;```五、浮点数的精度问题由于浮点数的存储方式和运算规则,可能会导致浮点数的精度损失。
这时候我们需要注意一些细节,例如:-比较两个浮点数是否相等时,应该使用一个误差范围进行判断,而不是直接用等号。
f l oa ta=0.1+0.2;f l oa tb=0.3;i f(f ab s(a-b)<1e-6){p r in tf("aa nd ba rea p pr ox im at el ye qua l.\n");}e ls e{p r in tf("aa nd ba ren o te qu al.\n");}```-尽量避免在浮点数之间进行等值判断,而是使用范围判断。
浮点数数值转换浮点数,在计算机中是一种用来表示有理数的数值类型。
它由一个小数部分和一个指数部分组成,能够表示比整数更大或更小的数值范围。
浮点数的转换是指将一个浮点数的表示形式转换为另一种表示形式的过程。
本文将介绍浮点数数值转换的相关知识,并探讨其在计算机科学和工程中的应用。
一、浮点数的基本表示形式浮点数通常以科学计数法的形式表示,即“尾数×基数的指数次幂”。
其中,尾数表示浮点数的有效数字部分,基数表示进制,常见的是10进制和2进制,指数表示浮点数的指数部分。
浮点数的值由尾数和指数共同决定,因此浮点数的转换主要涉及尾数和指数的转换。
二、浮点数的尾数转换尾数表示浮点数的有效数字部分,转换尾数时主要涉及精度损失和舍入误差。
由于计算机存储浮点数时使用有限的位数,导致浮点数的表示不够精确。
在进行浮点数的转换时,需要考虑如何保留有效数字并尽量减小精度损失。
常见的尾数转换方式包括截断、四舍五入和舍入到最近偶数等。
三、浮点数的指数转换指数表示浮点数的数量级,转换指数时主要涉及规格化和非规格化浮点数的处理。
规格化浮点数是指尾数的最高位始终为1,可以通过移位操作将非规格化浮点数转换为规格化浮点数。
指数转换还需要考虑溢出和下溢的情况,即当指数超过表示范围时需要进行溢出处理,当指数小于表示范围时需要进行下溢处理。
四、浮点数转换的应用浮点数转换在计算机科学和工程中有着广泛的应用。
在科学计算中,浮点数转换用于处理大量的实数计算,如数值积分、微分方程求解等。
在计算机图形学中,浮点数转换用于处理三维模型的坐标变换和光照计算等。
此外,浮点数转换还在计算机网络、数据库和人工智能等领域发挥着重要作用。
五、总结浮点数数值转换是一项重要的计算机科学技术。
它涉及到浮点数的尾数和指数的转换,需要考虑精度损失、舍入误差、规格化和非规格化等问题。
浮点数转换在科学计算、计算机图形学和其他领域中都有广泛的应用。
通过深入理解浮点数转换的原理和应用,我们能够更好地应对实际问题,提高计算机程序的准确性和效率。
浮点数表示方式总结王春桃定点数的表示范围有限,为此需要采用浮点数表示。
所谓浮点表示,即先将某一待表示数值写成二进制指数形式,然后在表示时只记录数的指数及尾数部分,这样能在有限的二进制位数情况下表示很大范围内的数值。
如对于十进制数值(20.59375)10,写成二进制指数形式为0.1010010011×24,在表示是只记录尾数0.1010010011和指数100即可。
总体而言,浮点数的表示形式主要有一般格式和IEEE754格式这两种。
其中,一般格式指满足一般的二进制数机器码(包括定点整数和定点小数)的规定规则;而IEEE754格式则在一般格式上进一步做了一些约定,以便表示数时比较方便和高效。
下面以32位的浮点数表示作为例子来说明。
1.浮点表示的一般格式根据浮点表示的目的可知,浮点数需要在有限长的二进制位数(如32位)内表示尾数和指数。
也就是说,在有限位数内需要包含尾数和指数两部分信息,进一步考虑到这两部分都有正负之分,因此浮点表示的一般格式可以设计为:图1 浮点表示的一般格式其中阶码就是指数,阶符就是指数的符号;数符是指尾数的符号。
至于它们之间各占多少位,取决于表示范围、表示精度等方面的权衡。
如对于32位长的浮点数,阶符和数符各用1位,阶码可以用7位,尾数23位;阶符和阶码也可以结合起来,用一个8位来表达。
图1中,将数符放在中间部分,这与定点表示格式不一致,而且在计算机处理时也不够方便,因此实际中一般采用图2所示的浮点表示格式。
数符阶码尾数图2 实际使用中的浮点表示一般格式其中,阶符已经包含在阶码中了。
例如,对于32位长的浮点数,数符用1位,0表示正数,1表示负数;阶码用8位,通常用移码表示以方便用硬件实现指数运算,因这时表示范围为正数范围0~255,减去偏移量128得到实际的指数范围为-128~127;尾数为23位,用原码或补码纯小数表示均可。
为了使得浮点数表示的范围尽可能大及表示的效率尽可能高,尾数需要进行规格化。
python语言的浮点数类型一、引言Python是一种高级编程语言,它的特点之一是支持多种数据类型。
其中,浮点数类型是一种非常重要的数据类型。
本文将详细介绍Python 语言中浮点数类型的相关知识。
二、浮点数类型的定义在Python中,浮点数类型表示实数,即带有小数部分的数字。
浮点数可以用科学计数法表示,例如1.23e-4表示0.000123。
三、浮点数类型的基本操作1. 加减乘除运算在Python中,对两个浮点数进行加减乘除运算非常简单。
例如:a = 1.2b = 3.4c = a + bd = a - be = a * bf = a / b2. 取整操作在Python中,可以使用int函数将一个浮点数转换为整型。
例如:a = 1.5b = int(a)3. 四舍五入操作在Python中,可以使用round函数将一个浮点数四舍五入到指定位数。
例如:a = 1.23456b = round(a, 3)四、注意事项1. 浮点数精度问题由于计算机内部采用二进制表示实数,在进行运算时可能会出现精度问题。
例如:a = 0.1 + 0.2print(a) # 输出结果为0.300000000000000042. 比较浮点数相等性由于浮点数精度问题,不能直接使用等于号比较两个浮点数是否相等。
可以使用math库中的isclose函数进行比较。
例如:import matha = 0.1 + 0.2b = 0.3print(math.isclose(a, b)) # 输出结果为True五、总结Python语言中的浮点数类型是非常重要的数据类型之一。
在进行浮点数操作时,需要注意精度问题和比较相等性的方法。
掌握了这些知识,就能更加熟练地使用Python语言进行编程。
4字节可表示的浮点数摘要:1.引言2.4 字节可表示的浮点数的概念3.4 字节可表示的浮点数的表示方法4.4 字节可表示的浮点数的优缺点5.应用场景与实际案例6.总结正文:1.引言在计算机科学中,浮点数是一种用于表示实数的数字系统。
在各种编程语言和计算机体系结构中,浮点数的表示方式有所不同。
4 字节可表示的浮点数是一种常见的浮点数表示方式,具有一定的应用广泛性。
本文将详细介绍4 字节可表示的浮点数的相关知识。
2.4 字节可表示的浮点数的概念4字节可表示的浮点数是指使用4个字节(32位)来表示的浮点数。
一个4字节可表示的浮点数可以表示2^32个不同的值,范围从负无穷到正无穷。
这种表示方法在计算机科学中非常常见,尤其是在Java、C#等编程语言中。
3.4 字节可表示的浮点数的表示方法在4 字节可表示的浮点数中,第一个字节表示符号位,0 表示正数,1 表示负数。
接下来的三个字节表示数值部分,其中第一个字节表示指数部分,第二个字节表示尾数部分。
根据IEEE 754 标准,4 字节可表示的浮点数可以表示为:(-1)^s * 2^(e-127) * (1 + m)4.4 字节可表示的浮点数的优缺点优点:- 存储空间小:使用4 个字节即可表示一个浮点数,相对节省存储空间。
- 计算速度快:许多计算机体系结构都对4 字节可表示的浮点数进行了优化,使得计算速度更快。
缺点:- 精度有限:由于只有32 位来表示浮点数,所以精度相对较低。
在一些需要高精度的场景中,可能需要使用更大的表示方法。
- 可能会出现溢出:当数值超过4 字节可表示的浮点数的范围时,会出现溢出,导致数值不准确。
5.应用场景与实际案例4 字节可表示的浮点数在许多实际应用场景中都有广泛应用,例如:- Java 中的float 和double 类型就是使用4 字节和8 字节表示浮点数。
- 在某些科学计算和数值分析任务中,4 字节可表示的浮点数可以满足精度要求,且计算速度快。
计算机中数据的表示之关于浮点数
1.关于浮点数的问题 浮点数的一般格式:
格式(1) 格式(2)
注意:(1)一般浮点数尾数采用纯小数(隐含位为0)来表示,即尾数M 与定点小数表示方法相同,由于
尾数的符号位决定整个浮点数的符号,故有时采用格式(2)的形式;
(2)当尾数真值为0(不论阶码何值),或阶码的值比能在机器中表示的最小值还小,计算机把该浮
点数看成零值,称为机器零,即浮点数表示不了真值绝对值很接近0的数,只能看成0处理; (3)尾数通常用原码或补码表示,阶码一般用移码或补码表示,如无特别说明,采用课本44页移
码表示方法。
浮点数表示范围:
⨯最大阶码最大正数=最大正尾数2 ⨯最小阶码最小正数=最小正尾数2
⨯最小阶码最大负数=最大负尾数2 ⨯最大阶码最小负数=最小负尾数2
那么给定一浮点数的表示形式,包括符号、阶码、尾数各占位数及其采用哪种机器码表示,如求其能表示最大负数,转化为求这种表示形式的能表示的最大负尾数,最小阶码。
浮点数规格化表示:
为了提高数据的表示精度,当浮点数尾数的真值不为 0 时,满足条件112≤≤尾数真值,称为一般
浮点数的规格化表示。
如没特别说明,指的是一般的非规格化浮点数。
注意规格化浮点数与一般浮点数一样,隐含位也是0,仅仅对尾数真值加上这一约束条件而已。
对于不同码制,特征如下: (1)尾数原码表示: (采用形式(1),按照尾数数值位为n 位)
①尾数>0时,其尾数部分形式尾数符号
1位
尾数数值n 位
01XXXXXXXXXXXXXXXXXX
称为规格化
最大:尾数部分0111…11,真值为12n
--;
最小:尾数部分0100…00,真值为
12
; ②尾数<0时,其尾数部分形式尾数符号1位
尾数数值n 位
1
1XXXXXXXXXXXXXXXXXX
称为规格化
最大:尾数部分1100…00,真值为12
-
; 最小:尾数部分1111…11,真值为(12)n
---;
(2)尾数补码表示: (采用形式(1),按照尾数数值位为n 位)
阶码符号尾数符号
数值
阶码符号
尾数符号0
①尾数>0时,其尾数部分形式尾数符号
1位
尾数数值n位
01XXXXXXXXXXXXXXXXXX称为规格化
最大:尾数部分0111…11,真值为12n-
-;
最小:尾数部分0100…00,真值为1 2
;
②尾数<0时,其尾数部分形式尾数符号
1位
尾数数值n位
10XXXXXXXXXXXXXXXXXX称为规格化
(注意:某些书上对此含糊其辞,参考清华(郑纬民:计算机系统结构)与上交大的书,以此为准!)
最大:尾数部分1011…11,真值为
1
(2) 2
n
-
-+;
最小:尾数部分1000…00,真值为-1;关于IEEE745浮点数:
表示形式
数值1位
(1)IEEE754浮点数短浮点数和长浮点数尾数隐含位为1,临时浮点数没有隐含位,注意阶码的偏置值与
一般浮点数不同,对于单精度和双精度数
(1) 1.2
s
m E
m-
=-⨯⨯偏置值表示真值
;
短浮点数和长浮点数尾数采用隐含位为1称之为规格化的IEEE短浮点数与长浮点数(注意区别一般的规格化浮点数)。
IEEE标准中也引入了非规格化浮点数,规定当浮点数的指数为允许的最小指数值时,尾数不必是规格化(Normalized)的。
有了非规格浮点数,去掉了隐含的尾数位的制约,可以保存绝对值更小的浮点数。
(2)机器零表示为全0;
(3)无限大数阶码全1,尾数全0,符号位指示正无穷或者负无穷。
若阶码全1,尾数不全0,表示NaN (非数字)。
(4)由于(2)(3)原因,单精度数阶码部分不能使用11111111和00000000,双精度阶码不能使用11111111111和00000000000。
2.课本习题3-4解答
以下解答采用浮点数表示形式(1),注意本题目不是IEEE754的格式!!!!!指的是一般浮点数。
(1)根据浮点数的表示范围,实质上是找到最大正尾数、最大阶码的表示及其真值(没有特别指出指的是一般格式浮点数,不用考虑规格化)
阶码:移码(课本44-45页),故全1时最大;尾数:补码
二进制表示为:
011111111111111111111111
11111111
真值:23127
(12)2
-
-
(2)实质上是找到最小负尾数、最大阶码(没有特别指出指的是一般格式浮点数,不用考虑规格化)
二进制表示为:
100000000000000000000000
11111111
真值:127
2-
(3)规格化需要特别注意其尾数的形式!!!尾数为补码,注意其正、负的表示形式
最大正数形式:
01111111111111111111111111111111真值:23127(12)2-- 最小正数形式:
01000000000000000000000000000000真值:128122
-
最大负数形式:
10111111111111111111111100000000真值:231281(2)22
---+
最小负数形式:
10000000000000000000000011111111真值:1272-
3.关于IEEE754标准表示范围的讨论(以短浮点数为例)
IEEE754标准的短浮点数采用偏置值为127的移码作为阶码,尾数采用原码表示,规格化的IEEE 短浮点数有隐含位为1。
(注意区别于一般的浮点数的特点)故规格化的IEEE 短浮点数表示范围讨论如下: 最大正数,考虑到阶码的取值限制,只能取00000001-11111110,故形式为
11111111111111111111111011111110真值:23127(22)2-- 最小正数:00000000000000000000000000000001真值:1262- 最大负数:
00000000000000000000000100000001真值:1262--
最小负数:
11111111111111111111111111111110真值:23127(22)2---
另,当全0时,用来表示浮点0
关于规格化的IEEE 长浮点数的范围,请大家自行推理研究。
上次考试原题:IEEE754标准规定32位浮点数格式中,符号位1位,阶码为8位,尾数为23位,则能表示的最大规格化正数为: A.23
127(22)2-++-⨯ B.23127(12)2-++-⨯ C.23255(22)2-++-⨯ D.1272322+-
4.更多>>
(1)数据表示这部分机器码中补码作为重点及难点,对于数据的表示,着重从其设计思想上理解,如果实在是不能够理解和推导出这几种机器码的表示方式及范围,只能记住了;对于求数值的机器数,比如负数的补码,可以采用公式,也可采用符号位为1,数值位取反末位加1去得到,反过来求机器数的真值道理亦然;
(2)浮点数这部分是难点,请大家仔细阅读本文,应该能区别开一般的作为理论研究的浮点数,一般的规格化浮点数以及在IEEE754标准下的浮点数之不同;
(3)关于数据表示的内容,课堂上只学到了最基本的,其实还有很多,比如按照某种要求设计一种浮点数,某种浮点数的表示方法的评价标准包括表数精度、表数效率、基值选择、格式设计等等,计算机系统结构学科关于这部分的内容很多很多,有兴趣同学可参考清华大学教授郑纬民编写的《计算机系统结构》一书。