信息的表示和处理

主要研究三种数字表示
1、无符号编码
2、补码编码
3、浮点数编码

一些基本概念


  • 整数表示相对小的数值范围,但是一个精确的结果,浮点数相比可以表示更大的访问,但是一种近似的表示
  • 地址:程序将存储器视为一个巨大的字节数组,称为虚拟存储器,存储器的每一个字节都由唯一的数字来标示,称为地址
  • 字:机器字长,表明整数类型和指针数据的标称大小,一般字长为32bit即4个字节,他可以提供4GB的虚拟地址空间
  • 数据大小,各个数据类型有不同的大小定义,但在c++中类型大小的定义只是规定了其下限


    信息的表示和处理_第1张图片
    QQ截图20140823102039.jpg
  • 寻址和字节顺序:对于大小跨越多个字节的对象需要明白两个基本概念1、对象的地址是多少2、对象在存储器中如何排列这些字节。对于第二点引出了字节顺序的问题,即小端法:最低有效位在低地址,高有效位在高地址;大端法:高有效位在低地址,低有效位在高地址
  • 布尔代数:围绕1、0数学知识体系,基本运算包括与&,或|,非~,异或^

整数表示


  • 整形数据类型


    信息的表示和处理_第2张图片
    QQ截图20140823124036.jpg
  • 无符号编码B2Uw(binary to unsigned,w表示位数)

    QQ截图20140823124231.jpg

  • 补码编码B2Tw(binary to Two's-complement,w表示位数)

    QQ截图20140823124242.jpg

    其中Xw-1为最高位,符号位,权重为-2^(w-1)
    从上述公式可知对于一个w位的有符号数其可以表示的访问为
    QQ截图20140823124621.jpg

  • 有符号数和无符号数转换
    本质的位模式是一致的,解析方式不同
    1、无符号数转有符号数U2T(X) = B2T(U2B(X))

    QQ截图20140823125642.jpg

    信息的表示和处理_第3张图片
    QQ截图20140823125103.jpg

    2、有符号数转无符号数T2U(X) = B2U(T2B(X))
    QQ截图20140823125016.jpg

    信息的表示和处理_第4张图片
    QQ截图20140823125745.jpg

  • 扩展一个数字的位
    在不同位长的整数之间转换,保持数值不变
    大到小impossible
    小到大考虑位扩展——无符号数零扩展,有符号数符号扩展

  • 截断数字
    只是将相应的位截断,后根据位模式进行解析


    QQ截图20140823130943.jpg
  • PS:符号数与无符号数之间的转换存在一定风险,在处理的时候需要特别注意,防止由此产生的溢出导致的bug

整数运算


  • 无符号加法
    两个无符号数加法的范围为[0 2^(w+1)-2],因此会出现溢出的情况(无符号数范围[0 2^w-1])
    QQ截图20140823132028.jpg

    信息的表示和处理_第5张图片
    QQ截图20140823132037.jpg
  • 补码加法
    信息的表示和处理_第6张图片
    QQ截图20140823132241.jpg

    信息的表示和处理_第7张图片
    QQ截图20140823132230.jpg
  • 补码的非
  • 无符号乘法
    QQ截图20140823133824.jpg
  • 补码乘法本质上就是直接运算,之后按照有符号数直接截断解析
    QQ截图20140823133900.jpg

    信息的表示和处理_第8张图片
    QQ截图20140823134255.jpg
  • 乘以常数
    一般将常数拆解成2的次方的累积和,然后左移位操作,通常有以下两种方式
    QQ截图20140823134502.jpg
  • 除以2的幂
    采用右移的方式,对于无符号数直接采用逻辑右移即可,但对于补码需要采用算术右移,即需要考虑符号位
    为了使整形结果最终右移的结果向0靠齐,对于补码在右移前,需要考虑增加一个偏移量
    QQ截图20140823135141.jpg

    信息的表示和处理_第9张图片
    QQ截图20140823135152.jpg

浮点数


  • 信息的表示和处理_第10张图片
    QQ截图20140823135341.jpg

    QQ截图20140823135326.jpg

    信息的表示和处理_第11张图片
    QQ截图20140823135311.jpg

reference


  • 深入理解计算机系统

你可能感兴趣的:(信息的表示和处理)