• 深入理解计算机系统 第二章 信息的表示和处理(2)


    接上一次的部分,后两节讲的是整数运算以及浮点数的运算。整数分为无符号数字和补码。浮点数分为二进制小数和IEEE浮点表示。

    三种数字表示:

    1. 无符号:传统的二进制表示法
    2. 补码:表示有符号整数的最常见方法
    3. 浮点数:表示实数的科学计数法的以为为基底的版本
      结果太大,超出位数的限制时——溢出

    逻辑右移和算数右移: 逻辑右移在左端补0,算数右移在左端补最高有效位的值。无符号数右移必须是逻辑右移,有符号数没有要求,但是基本实现算术右移。

    实现中当左移或者右移超过数据位数时,对移位数量取余,但标准没有规定。

    无符号加法等价于计算和mod 2^w。 s = x + y,当且仅当s < x或s < y时发生溢出。

    补码加法,负溢出得到正数,正溢出得到负数。

    补码的非,x>-2^(w-1) 时为-x,x=-2^(w-1)时为它本身。求补码的非可以采用两种方法:

    1.   取反加一
    2.   将最右边1的左边所有位取反

    无符号乘法:xy = (xy)mod(2^w)。

    整数乘法代价很高,编译器会尝试将乘法优化为加法和位移来提高性能。例如x14=(x<<3)+(x<<2)+(x<<1),或者x14=(x<<4)-(x<<1)

    浮点数的舍入以及浮点运算。

  • 相关阅读:
    1009 说反话 (20)
    1008 数组元素循环右移问题 (20)
    1007 素数对猜想(20 分)
    1006 换个格式输出整数 (15)
    PAT 1005 继续(3n+1)猜想 (25)
    PAT 1004 成绩排名 (20)
    PAT 1003 我要通过!(20)
    PAT 1002 写出这个数 (20)(20 分)
    PAT 1001 害死人不偿命的(3n+1)猜想 (15)
    人口普查(20) PAT
  • 原文地址:https://www.cnblogs.com/zhishuiyushi/p/11520535.html
Copyright © 2020-2023  润新知