• CSAPP Chapter 2


    计算机中的信息存储

    大多数计算机使用8位的块(字节byte)作为最小的可寻址的存储器单位,而不是在存储器中访问单独的位(单独的位由存储器内部寻址)。程序将存储器视为一个非常大的字节数组,称为虚拟存储器(virtual memory)。存储器的每个字节都由一个唯一的数字来标识,称为它的地址,所有地址的集合称为虚拟地址空间(virtual adress space)。这个虚拟地址空间只是一个展现给机器级程序的映像,实际的实现见第九章。

    每台计算机都有一个字长(32位,64位)。因为虚拟地址空间以这个字长来编码,所以字长(地址总线条数)决定了虚拟地址空间大小(同时每个地址都用字长大小的位数来表示)。所以,在 C 中,指针的大小即是字长。

    当从一种类型 cast 到另一种类型时,比特位没有变化,只是解释方法改变。

    字节顺序

    大端(big endian),小端表示法(little endian)

    位运算有很多黑魔法

    a ^ a = 0
    a ^ b ^ a = a ^ a ^ b = b (跟顺序无关,位运算)

    逻辑运算

    逻辑右移, (左边补0)
    算数右移 ,(左边补最高有效位)

    补码:

    正数->负数:~x + 1

    浮点数表示 v = (-1)s * M * 2e
    在计算机中浮点数都是不精确的,所以不要用 == 去比较

    2015-09-19

  • 相关阅读:
    C#设计模式(6)——原型模式(Prototype Pattern)
    C#设计模式(4)——抽象工厂模式
    C#设计模式(3)——工厂方法模式
    C#设计模式(2)——简单工厂模式
    cmd 打 jar 包
    java eclipse 中给args 传递参数
    java 中值传递和引用传递(转)
    java unreachable code不可达代码
    java语言中if语句的用法
    java中 构造器与void
  • 原文地址:https://www.cnblogs.com/whuyt/p/4821705.html
Copyright © 2020-2023  润新知