zoukankan      html  css  js  c++  java
  • 深入理解计算机系统第二章

    续更...

    学习视频:https://www.bilibili.com/video/BV1iW411d7hd?p=2

    学习书本:《深入理解计算机系统》第3版。

    信息存储:8位=1字节;内存所有可能地址集合称为“虚拟地址空间”;每个程序对象可以视为一个“字节快”,程序本身是一个字节序列。

    进制转换:十六进制,用A~F表示,A=10、C=12、F=15。十六进制以“0X”开头。每四位二进制数对应一位十六进制数(2的四次方=16,因此二进制和十六进制很好转换)。其他进制转十进制,通过加法、乘法求最终值。十进制转十六进制,通过不停的求商,求余,直到商最后为0。

    字长:常见的32位和64位字长。字长w位,虚拟地址为0~2w-1。大多数64位机器可以运行32位机器编译的程序。到底叫“32位程序”还是“64位程序”取决于编译。C语言某些数据类型的确切字节数依赖于程序如何被编译。

    对象地址:多字节对象被存储为连续的字节序列,对象地址使用字节序列中的最小地址。(每个字节都有自己的地址)。

    字节顺序:0x01234567,01如果放地址前面,后面按照顺序放后面的地址,则称“大端法”,反正67放最前地址,其他按顺序倒推,则称“小端法”。机器的不同,字节顺序可能不同。

    布尔代数运算(位运算):&、|、^、~。满足分配律、结合律、交换律。

    逻辑运算:与位级运算相似,但只返回1或0,0代表false,1代表true。当位级运算的参数只有0和1的时候,才和逻辑运算有相同的行为。

    移位运算:<<——左移运算。>>——右移运算。右移分逻辑右移和算术右移。C语言中,如果移动k位,且k位比数据类型的w位要大,那就移动k mod w位。

    整数数据类型:负数的取值范围不对称,负数比正数大1,例如 [signed] char 的范围 -128~127。

    原码、反码、补码:原码参与减法运算导致算出来的真值不对,然后有反码,反码导致0的编码有两种,所以有补码,补码的-128没有对应的反码和原码。

    补码对应有符号类型。

    无符号参与减法运算很容易出bug。求差如果求出负数,bug。

                                                                                                                                                                                               `

  • 相关阅读:
    《程序是怎样跑起来的》读书笔记——第十一章 硬件控制方法
    《程序是怎样跑起来的》读书笔记——第十章 通过汇编语言了解程序的实际构成
    《程序是怎样跑起来的》读书笔记——第九章 操作系统和应用的关系
    《程序是怎样跑起来的》读书笔记——第八章 从源文件到可执行文件
    《程序是怎样跑起来的》读书笔记——第七章 程序是在何种环境中运行的
    Linux入门之常用命令(15) lsof
    关于volatile 最完整的一篇文章
    Redis缓冲区设置
    设计模式之【抽象工厂模式】
    设计模式之【工厂模式】
  • 原文地址:https://www.cnblogs.com/bibi-feiniaoyuan/p/csapp.html
Copyright © 2011-2022 走看看