zoukankan      html  css  js  c++  java
  • 《深入理解计算机系统(第三版)》第二章学习总结

    第二章 信息的表示和处理

    2.1 信息存储

    • 字节(byte):8位的块,作为最小的可寻址的存储器单位,不是访问存储器中单独的位。
    • 计算机字长:指明指针数据的标称大小。32位机器虚拟地址空间为4GB。64位为16EB。64位机器可以运行32位机器编译的程序,反过来不行。
    • 字节顺序
      • 小端法:最低有效字节在最前面;
      • 大端法:最高有效字节在最前面;
    • 大小端引起的字节顺序问题:
      • 在不同类型的机器之间通过网络传输二进制数据(用协议解决)。
      • 在阅读表示整数数据的字节序列时。
      • 编写规避正常的类型系统的程序时。
    • 字符串表示:字符串被编码为一个以null(‘’)字符结尾的字符数组。每个字符用某个标准编码来表示,常见的为ASCII字符码。代码表示:不同机器的指令编码是不同的,一般二进制代码是不兼容的。
    • 布尔运算:~非,&与,|或,^异或,位运算。
    • 逻辑运算:逻辑运算认为所有非0参数表示TRUE,0表示FALSE。对应OR(||)、AND(&&)和NOT(!)。
    • 移位运算:左移,x<<k,丢弃最高的k位,右端补k个零。右移分为逻辑右移和算术右移。逻辑右移在左端补0,算术右移在左端补最高位。

    2.2 整数表示

    • 无符号整数直接用其二进制数值表示。
    • 有符号整数用二进制补码表示,最高位为符号位,1表示负数,0为非负。补码的范围是不对称的,|Tmin|=|Tmax|+1,C语言中文件<limits.h>定义了一组常量,来限定编译器运行时不同整型数据的范围。
    • 在C语言中,允许强制类型转换,转换规则是数值可能会变化,位模型不变。
    • 在进行位扩展操作的时候,比如将一个32位的有符号数扩展到64位,那么在保证原来的值不变的情况下,把31个低位扩展到64位的低位上,而最高的符号位扩展到高33位上。
    • 将一个无符号数转换为一个更大的数据类型,只需要简单地在表示的开头添加0,叫做零扩展。将一个二进制补码数字转换为一个更大的数据类型,在表示中添加最高有效位的值,叫符号扩展。

    2.3 整数运算

    • 无符号加法:溢出直接去除高位。
    • 有符号加法:当做无符号数进行加法,溢出直接截断。
    • 有符号的非:-x=~x+1,即等于按位取反再加1.
    • 有符号数的乘法:xy=(x的补码y的补码)的补码
    • 整数乘以常数:用移位和加法以及减小来代替乘法,无论x是无符号的还是有符号的,其计算结果一致。

    2.4 浮点

    1、浮点数表示(IEEE标准):(V=(−1)^S*M*2^E)
    符号位s:复数s=1,正数s=0
    有效数M:是一个二进制小数
    指数E:对浮点数加权,2的幂,可以为负数。

    2、浮点数规格化步骤:

    • 将一个浮点数变为二进制,并且写成1.x的科学记数法形式,注意是2进制,基数是2.这样的话,小数点后面的就是尾数部分,可以在尾数部分后面补足0,如果是单精度的话,要保证尾数的一个23位。
    • 因为在计算阶码的时候会用到E = exp - Bias, 所以exp = E+ Bias。这里我要强调的是,我们在写数字的时候,所看的那个阶码就是E,比如1.00000*2^12,,那么此时12是E不是exp这个位模式所代表的值。
    • 最后把对应的三个位置上的位模式写入对应的位置即可。

    3、在浮点数运算的时候,可能会出现这样两个问题:

    • 加法中,两个数的阶码不同,需要调整尾数,以便两个数的小数点能够对齐,然后相加。
    • 乘法中,乘法时两乘数的指数可能都很大,存在溢出可能。所以首先计算出运算准确的结果,然后在进行舍入操作,使得结果能够控制在规定的精度内。
      • 舍入操作的种类:1.向0舍入 2.无限向负无穷舍入 3.无限向正无穷舍入 4.向最近的舍入(貌似看起来是最好的办法,但是一个数在两个整数中间的时候,这种情况会出问题)5.向偶数舍入
      • 在进行带有舍入操作的运算的时候,是不能运用结合律还有分配律的。这两个数学运算定律在带有舍入操作的浮点数运算里是不适用的。
      • 默认的情况下,浮点数的舍入方式是向偶数舍入。
  • 相关阅读:
    JS实现前台表格排序功能
    openoffice安装手记
    OpenOffice 实现OFFICE在线预览
    毫秒事件转换小方法
    axis2 jar包详解及缺少jar包异常分析
    Android EditText控件完美实现只读(ReadOnly/NonEditable)
    android:获取联系人信息(姓名和电话)
    dex2jar.bat反编译apk的classes.dex文件错误:
    服务器压力测试系列二:服务器监控工具tsar安装
    memcache list all keys
  • 原文地址:https://www.cnblogs.com/fanxiaonan/p/11908907.html
Copyright © 2011-2022 走看看