《深入理解计算机系统》第二章 信息的表示和处理

2.1 信息存储

一个字节占8个位,计算机中最小的可寻址的存储器单位。
机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器
存储器的每个字节都由一个唯一的数字来标识,称为它的地址
所有这些可能的地址的集合称为虚拟地址空间

2.1.1 十六进制表示法

十进制和十六进制之间的转换
使用python脚本

#! /usr/local/bin/python3

#Created on Sep 17th,2017
#author walt740
#module:hex_dec
#note:Translation between hexadecimal and decimal numbers on the commandline arguments
 
import sys 
import re  
 
def  hex_to_dec(hex_num):
    print("{} = {}".format(hex_num,int(hex_num,16)))
 
def dec_to_hex(dec_num):
    print("{} = {}".format(hex(int(dec_num,10)),dec_num))
 
if __name__ == '__main__':
    for i in sys.argv[1:]:
        if re.match('^0x.*|^0X.*',i):
            hex_to_dec(i)
        else:
            dec_to_hex(i)

2.1.2 字

一个字长为w位的机器,虚拟地址的范围位0 ~ $2{w-1}$,程序最多访问$2w$个字节。

2.1.3 数据大小

由于计算机位数的不同,会造成在数据类型的存储上,采用的位数略有不同,下表是在32位和64位机器下,C语言当中的数字数据类型需要的位数。

可以看出,对于长整形以及字符指针类型来说,在32位和64位系统下的字节数是不同的。特别的,对于指针类型来说,所有指针类型在32位下都是4位,而在64位下都是8位,这是由虚拟地址空间的地址位数或者说字长所决定的。


参考:

PYTHON实现十六进制与十进制的转换

原文地址:https://www.cnblogs.com/BinBinStory/p/7529343.html