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

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)

677913-20170917173728219-1734090678.jpg

2.1.2 字

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

2.1.3 数据大小

由于计算机位数的不同,会造成在数据类型的存储上,采用的位数略有不同,下表是在32位和64位机器下,C语言当中的数字数据类型需要的位数。
677913-20170917182231157-1638441854.jpg
可以看出,对于长整形以及字符指针类型来说,在32位和64位系统下的字节数是不同的。特别的,对于指针类型来说,所有指针类型在32位下都是4位,而在64位下都是8位,这是由虚拟地址空间的地址位数或者说字长所决定的。


参考:

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

转载于:https://www.cnblogs.com/BinBinStory/p/7529343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值