zoukankan      html  css  js  c++  java
  • 深入理解计算机系统 第二章 信息的表示和处理(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)

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

  • 相关阅读:
    博客园CSS备份5
    博客园界面自定义教程
    awk 入门教程(阮一峰)
    批量检查cksum是否一致
    linux文件批量重命名
    cipher block
    riscv-gdbserver
    rsa_gmp
    asic
    video
  • 原文地址:https://www.cnblogs.com/zhishuiyushi/p/11520535.html
Copyright © 2011-2022 走看看