zoukankan      html  css  js  c++  java
  • 2017-2018-1 20179226 《深入理解计算机系统》第2周学习总结

    教材学习知识点总结

    本章研究三种重要数字表示。无符号基于二进制,表示大于或等于零的数字。补码表示有符号整数(可正可负)最常见的方式。浮点数表示实数的科学记数法的以2为基数的版本。

    2.1 信息存储

    1.大多数计算机使用8位的块,或者字节。作为最小的可寻址的内存单位,而不是访问内存中单独的位。
    2.内存的每个字节都由一个唯一的数字来标识,称为虚拟内存的地址,所有可能地址的合集称为虚拟地址空间
    3.进制间转换
    1)十六进制转换为二进制:通过展开每个十六进制数字,将它转换为二进制格式。
    2)二进制转换为十六进制:首先把它分为每4位一组转换为十六进制,如果位总数不是4的倍数,最左边的一组可以少于4位,前面用0补足。
    3)十进制转换为十六进制:辗转相除法取余数并倒排。
    4)十六进制转换为十进制:用相应的16的幂乘以每个十六进制数字,如:0x7AF,相应十进制为716^2+1016+15=1967。
    4.地址表达式&x的值为0x100,那么x的4个字节将被存储在内存的0x100、0x101、0x102、0x103位置。
    5.小端法:最低有效字节在最前面的方式。大端法:最高有效字节在最前面的方式。大多Intel兼容机都只是小端模式。
    6.字节顺序成为问题1)在不同类型机器间通过网络传送二进制数据时。2)阅读表示整数数据的字节序列时。3)编写规避正常的类型系统的程序时。
    7.布尔代数:
    1)~对应NOT,1→0,0→1
    2)&对应AND,只有当p=q=1时,才为1
    3)|对应OR,只有当p=q=0时,才为0
    4)^对应异或,只有当p=0,q=1或p=1,q=0时,才为1
    8.逻辑运算符||、&&、!分别对应OR、AND、NOT运算。逻辑运算认为所有非零的参数都为TRUE,而参数0表示FALSE。
    9.移位运算有三种:左移、逻辑右移、算术右移。例:x:[10010101],x<<4:[01010000],x>>4(逻辑):[00001001],x>>4(算术):[11111001]

    2.2 整数表示

    1.有符号型中负数的范围比正数的范围大1。
    2.编码
    1)无符号数编码:B2U4([1011])=18+04+12+11=11
    2)补码编码:B2T4([1011])=-18+04+12+11=-5
    3)补码转换为无符号数公式:T2Uw(x)=x+2w,x<0;T2Uw(x)=x,x>=0。例如:T2U16(-12345)=-12345+216=53191
    4)无符号数转换为补码公式:U2Tw(u)=u,u<=TMaxw;u-2w,u>TMaxw,其中TMaxw=2(w-1)-1。例如:U2T16(53191)=53191-2^16=-12345
    5)无符号数的零扩展:开头添加0。例如:[1011]=[01011]
    6)补码数的符号扩展:添加最高有效为的值。例如:[1011]=[11011]
    7)截断无符号数:x'=x mod2^k,例如:[1011]=[011]
    8)截断补码数值:x'=U2Tk(x mod2^k)

    2.3 整数运算

    1.无符号数
    1)无符号数加法。2)检测无符号数加法中的溢出。3)无符号数求反。4)无符号数乘法。
    2.补码
    1)补码加法。2)检测补码加法中的溢出。3)补码的非。4)补码乘法。

    2.4 浮点数

    1.二进制小数:例如二进制数101.11表示数字14+02+11+10.5+1*0.25=5.75
    2.IEEE浮点标准用V=(-1)s*M*2E,其中符号s决定这数是负(s=1)还是正(s=0),尾数M是一个二进制小数,阶码E的作用是对浮点数加权,这个权重是2的E次幂。
    3.偶数舍入:对于两个可能结果中间数值的舍入效果,将数字向上或者向下舍入,使得结果的最低有效数字是偶数。例如:1.5美元和2.5美元都舍入成为2美元。
    4.当参数中有一个是特殊值(如-0、-∞或NaN)时,IEEE标准定义1/-0将产生-∞,定义1/+0产生+∞。
    5.浮点加法满足了单调性属性:如果a>=b,那么除了NaN,都有x+a>=x+b。6

    教材学习中的问题和解决过程

    • 问题1:在除以2的幂的补码除法,向上舍入中,总要添加一个偏量,是为什么?添加的偏量是多少?
    • 问题1解决方案:
      对于一个无符号数还有一个有符号数的非负数来说的话,除以2的k次幂和把被除数右移k位的结果是一样的,但是对于有符号数的负数来说,就会有一些差错。当被除数是负数的时候,要给他加上2^k - 1这个偏移量,才能够得到正确的结果。所以在计算机内如果除数是2的幂次的时候,是会用向下面的这个表达式的形式去计算除法的:(x < 0 ? x + 2^k -1:x) >> k
    • 问题2:NaN是什么意思?
    • 问题2解决方案:NaN,是Not a Number的缩写,在IEEE浮点数算术标准(IEEE 754)中定义,表示一些特殊数值(无穷与非数值(NaN))
  • 相关阅读:
    js对象,数组,字符串的操作
    js 类型之间的相互转化
    Spark常见问题汇总
    Spark RDD的默认分区数:(spark 2.1.0)
    手动合并hadoop namenode editlog
    Yarn参数优化(Fair Scheduler版本)
    linux中在某个目录下多个文件中搜索关键字
    JDK中jps、jinfo、jstat、jstack、jmap、jconsole等命令简介
    Elasticsearch 为何要在 7.X版本中 去除type 的概念
    Linux 查看内存使用情况
  • 原文地址:https://www.cnblogs.com/9226ryf/p/7880587.html
Copyright © 2011-2022 走看看