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)

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

  • 相关阅读:
    idea 搭建spring boot
    面向对象
    idea 转普通项目为maven 项目
    java 基础
    设计模式
    GeneratedKeyHolder的作用:获得新建主键值
    Oracle中Merge into的用法实例讲解
    深入理解Java线程池:ThreadPoolExecutor
    java Timer(定时调用、实现固定时间执行)
    js实现数组去重
  • 原文地址:https://www.cnblogs.com/zhishuiyushi/p/11520535.html
Copyright © 2011-2022 走看看