zoukankan      html  css  js  c++  java
  • 《深入理解计算机系统》第二章 信息的表示和处理

    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实现十六进制与十进制的转换

  • 相关阅读:
    未格式化的输入/输出操作
    格式化输入与输出
    随机数
    正则表达式
    bitset
    tuple
    servlet笔记
    springside
    maven
    Lua简易入门教程
  • 原文地址:https://www.cnblogs.com/BinBinStory/p/7529343.html
Copyright © 2011-2022 走看看