深入理解计算及系统 Chapter2 学习笔记(持续更新)

Chapter2 信息的表示和处理

1.将一个十进制的数字x转换为n进制,可以用n反复除x,得到商q和一个余数r,然后用这个r作为最低位数字,反复这个过程直到商为0,则可以得到n进制的表示,其原理为:

x = a0nm + a1nm-1 +···+ amn0

2.每台计算机都有一个字长(word size),指明指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。也就是说,对于一个字长为w位的机器,虚拟地址的范围为0~2w-1

3.小端法:最低有效字节在最前面的方式;大端法:最高有效字节在最前面的方式。如何判断?

#include <stdio.h>

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, size_t len) {
    size_t i;
    for(i = 0; i < len; i++)
        printf(" %.2x", start[i]);
    printf("\n");
}

4.左移和右移

  左移k位:丢弃最高的k位,并在右端补k个0

  右移分为逻辑右移和算数右移:

    逻辑右移k位:左端补k个0,抛弃最低的k位

    算数右移k位:左端补k个最高有效位的值,抛弃最低的k位

5.整数的表示

  无符号编码可以定义为一个映射B2Uw:{0, 1}w → { 0, 1,···, 2w-1 }

  补码编码可以定义为一个映射B2Tw:{0, 1}w → { -2w-1,···, 2w-1-1 }

  两种编码方式都具有唯一性(双射)

猜你喜欢

转载自www.cnblogs.com/cedriccheng/p/9563073.html