CSAPP阅读笔记——第二章:信息的表示和处理

2023-10-27

核心内容

  1. 编码原则:无符号,补码,浮点
  2. 溢出(无符号、补码)、精度(浮点)

一、信息存储

  1. 字节:存储最小单元。程序的内存管理是在虚拟地址层面上。
  2. 字长:用于指明整数和指针数据的大小。编码虚拟地址,决定虚拟地址空间大小。
  3. 数据大小:编码数字的格式。其中long int 和指针的字节数是机器字长。(因为指针的值是地址,而地址长度即为机器字长)
    char(1), short(2), int(4), long long int (8), float(4), double(8)
  4. 多字节对象地址:最小的地址
    字节顺序:大端(高位存储于低地址,自然的阅读方式)、小端(低位存储于低地址)。对于字符串则没有字节序之说。
  5. 位运算
    (1)位向量:用于编码集合。因为位向量的布尔运算对应于集合运算。
    (2)x=x^y,y=x^y, x=x^y (隐含的中间变量x^y,因为x^y配合x或y可以获得x,y的全部信息)
    (3)掩码
    set:&0, | 1;
    get:&1, |0,^0;
    oppose:^1;
    (4)位移
    算数、逻辑左移:低位补零
    算数右移:高位补最高有效位的值——有符号整数
    逻辑右移:高位补零——无符号整数
    注:位移w很大时, 取k mod w,其中k为机器字长

二、整数的表示

  1. 有符号数:通常用补码表示,最高位为负权重;无符号数:用正常二进制表示
  2. 有符号和无符号的关系:——位表示不变
    (1)可能会有相同的位表示
    (2)强制类型转换时,位级存储(位表示)不变,只改变解释方式。
    (3)有符号和无符号数转换:相差2^w
    (4)一个运算数是有符号、另一个是无符号时,C语言隐式处理为无符号,会出现意想不到的错误,建议:不要使用无符号数
    (5)扩展
    零扩展:无符号数
    符号扩展:有符号数,前面扩展若干符号位。注:从高位起,连续若干个1可以等效成一个1,数值不变。
    (6)截断:有可能改变数值,溢出的一种形式
    无符号截断:直接mod2^k(k为截断后字长)
    有符号截断:无符号截断+符号转换

三、整数运算

位级行为不变,满足结合律交换律和分配率

  1. 溢出的位级行为:正常运算 + 截断
  2. 无符号溢出相当于模运算,有符号溢出和无符号位级行为相同,解释结果不同。
  3. 无符号加法溢出:和小于加数
    有符号加法负溢出:负变正,会截断;正溢出:正变负不会截断。
  4. 补码的非:位级表现为取反加1。数字上除Tmin的非是本身外,其它数的非即为相反数。
  5. 乘法的实现:位移(乘以2的幂次方)+加/减法
  6. 整数除法——除以2的幂(结果均为舍小数部分,留整数部分)
    (1)无符号:逻辑右移,向下取整
    (2)有符号:商为负数时,结果表现为向上取整。实现时:先偏置,再向下取整。
    7. 算数溢出检测:加法——和小于加数;减法——加法检测逆过程,注意Tmin单独检测;乘法——用除法检测或利用截断和扩展,如下:

    long long unsigned c = a * b;
    unsigned d = (unsigned) c;
    if( d ! = c) Overflow;
    
  7. 容易出问题的地方:
    (1)int和unsigned之间的转换
    (2)正负不对称
    (3)算数溢出

四、浮点数

  1. IEEE标准:符号、尾数、阶码
  2. 数值分布不均匀,靠近零的分布密
  3. 规格化、非规格化(接近于0)、特殊值(无穷、不定值)
  4. 浮点数和整数之间的对应关系和强制类型转化:
    int->double or float->double:无影响
    int->float:数字会被舍入
    double->float:数字会溢出或舍入
    float->int or double->int: 数字会向零舍入
  5. 浮点运算不具有结合性和分配性(可能溢出而丢失信息)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSAPP阅读笔记——第二章:信息的表示和处理 的相关文章

  • CSAPP Lab:attacklab

    大小尾端 首先关于这个 xff0c 我一直没记清楚 xff0c 所以做个总结 xff1a 在裘宗燕翻译的 程序设计实践 里 xff0c 这对术语并没有翻译为 大端 和小端 xff0c 而是 高尾端 和 低尾端 xff0c 这就好理解了 xf
  • CSAPP第二章课后作业题

    include
  • CSAPP-数据表示与运算实验

    目录 一 实验目的 二 实验要求及注意事项 三 实验原理与内容 1 位操作 2 补码运算 3 浮点数操作 四 实验设备与软件环境 五 实验过程与结果 1 操作符及运算概览 1 位运算和逻辑运算 2 补码运算 3 浮点数 2 功能实现与结论
  • 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • CSAPP阅读笔记——第二章:信息的表示和处理

    核心内容 编码原则 无符号 补码 浮点 溢出 无符号 补码 精度 浮点 一 信息存储 字节 存储最小单元 程序的内存管理是在虚拟地址层面上 字长 用于指明整数和指针数据的大小 编码虚拟地址 决定虚拟地址空间大小 数据大小 编码数字的格式 其
  • csapp第三章总结

    目录 3 1程序编码 1 编译器优化等级 2 汇编代码 3 编译 4 反汇编器 3 2数据格式 3 3访问信息 1 寄存器 2 操作数类型 3 数据传送指令mov 4 加载有效地址lea 5 算术和逻辑操作 3 4控制 1 条件码 2 访问
  • 【深入理解计算机系统】第二章重点汇总

    2 1 信息的存储 十六进制转二进制 将十六进制的每一位转换成一个4位的二进制 即 0123456789 A B C D E
  • LeetCode146- LRU 缓存

    class LRUCache public struct Node int key val Node left right Node int key int val key key val val left NULL right NULL
  • 《CSAPP》(第3版)答案(第二章)(一)

    CSAPP 答案 第二章 一 P55 include
  • 程序是如何从编辑到执行的——我的初步理解

    目录 1 预处理 2 编译 3 汇编 3 1 机器码的格式 3 2 编码过程 4 链接 5 取指 6 译码 7 执行 8 访存 9 写回 10 更新PC 今天来谈谈 一句代码 是如何从被编辑到被执行的 以下为本人在阅读相关书籍资料后的初步理
  • CSAPP-BinaryBomb实验

    目录 一 实验目的与要求 二 实验原理与内容 三 实验过程与结果 1 程序编码 汇编 2 拆解过程 Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6 Secret phase 一 实验目的与要求
  • csapp 第一章 计算机系统漫游

    计算机系统由硬件和系统软件组成 共同工作来运行应用程序 include
  • C/C++中的移位运算符——由二进制转换程序引发的思考

    以前学习移位运算符的时候并没有太多关注它 而此次关于移位运算符的探究 主要源于写的一个二进制显示的程序 include
  • 运行时链接

    基本概念 运行时链接 是在程序运行时 而非编译时或加载时 将程序代码与其依赖的库代码进行链接的过程 动态链接在程序启动时或实际运行过程中通过API函数完成 这种方式的主要优点是它允许程序在运行时加载和卸载不同的库模块 从而实现更高的模块化和
  • CSPP 数据的机器级表示

    寄存器 intel x86 64 调用寄存器与被调用寄存器 因为要保证在调用函数返回后寄存器的值恢复为未被调用之前 所以下面的例子运用pushq指令保存被调用寄存器rbx的值 函数 gcc产生的指令指示操作数的大小 寄存器的作用 rax存储
  • CSAPP Lab4- PerfLab

    代码优化 typedef struct unsigned short red R value unsigned short green G value unsigned short blue B value pixel 图像用一维数组表示
  • 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • A Tour of Computer Systems

    1 1 Information is Bits Context All information in a system is represented as a bunch of bits The only thing that distin
  • CSAPP Lab5- MallocLab

    实验目标 本实验需要用c语言实现一个动态的存储分配器 也就是你自己版本的malloc free realloc函数 实验步骤 tar xvf malloclab handout tar解压文件 我们需要修改的唯一文件是mm c 包含如下几个
  • 程序的链接

    程序的链接是一个非常实际的问题 他建立在很实际的问题之上 不从程序员的角度去思考问题 则是从软件的角度去思考如何复用错综复杂的代码 因为 这个问题的本质是我们没有给底层的硬件一个完整的可按顺序执行的程序 我们在前几章虽然讨论了指令流的问题

随机推荐

  • 异常中禁用e.printStackTrace()

    相信大家在开发代码的过程中都用过try catch语句 不知道有没有人写过这种语句 try catch Exception e e printStackTrace log error error e 或者 try catch Excepti
  • js时间对比的问题

    开发中 对于时间对比 大家都比较喜欢从页面获取时间之后 直接使用大于小于做判断 比如这样 javascript view plain copy if bgTime edTime bgTime gt edTime alert 开始时间不能晚于
  • 超好用的webssh(支持秘钥登录)

    webssh 项目地址 https github com billchurch WebSSH2 安装 webssh cd usr local git clone https github com billchurch WebSSH2 git
  • 调用其他文件的define_DEFINE_PROFILE用法介绍(1)

    01 概述 可以使用DEFINE PROFILE定义一个自定义边界配置文件或单元格区域条件 该条件随空间坐标或时间而变化 可以自定义的变量如下 速度 压力 温度 湍流动能 湍流耗散率 质量流量 目标质量流量作为流动时间的函数 物种质量分数
  • 新春特辑

    志在哪里 哪里就有成功 心在哪里 哪里就有风景 爱在哪里 哪里就有感动 在新年来临之际 互联互通社区衷心祝愿您 春节快乐 身体健康 心想事成 1 中国非结构化数据中台实践白皮书 2 2020中国服装行业数据中台研究报告 3 2020中国数据
  • Java嵌套if选择结构

    嵌套if选择结构本期用两个例题来讲解 例题1 学校举行运动会 百米赛跑成绩在12s内有资格进入决赛 否则淘汰 进入决赛再根据性别来区别进入男子组决赛和女子组决赛 public static void main String args Sca
  • 区块链学习3:区块链的共识机制

    前往老猿Python博文目录 共识机制主要用于解决分布式计算的根本问题数据的一致性 所谓共识 简单理解就是指参与方都达成一致 在区块链系统中 如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题 这个问题的解决方案就是制定一套共
  • Python 写函数,传入一个参数n,返回n的阶乘

    def factorial n param n 参数 return 返回结果 if n lt 0 exit sum 1 for i in range 1 n 1 sum i print sum return factorial 8
  • 分享8个超神的Pycharm插件们,可以说是无敌的存在!

    分享几个YYDS的Pycharm插件 1statics staitcs可以作为KPI摸鱼好助手 120w次下载的这个插件 可以直接统计代码的具体情况 对工程里的每个代码文件进行统计代码量 空行量 注释量 代码行占比等进行清晰统计 下次就算功
  • centos7 nodejs 启动vue项目

    1 准备项目文件及目录 2 检查nodejs 环境 3 安装vue cli脚手架构建工具 命令 npm install g vue cli 4 切换项目目录 运行初始化命令 切换命令 cd projects DDSWeb 初始化命令 vue
  • STM32F1端口复用与重映射(学习心得)

    端口的复用 以USART1为例 PA9管脚的复用功能为 USART1 TX 串口发送端 PA10管脚的复用功能为USART1 RX 串口接收端 对端口复用的配置 GPIO端口的时钟使能 RCC APB2PeriphClockCmd RCC
  • C语言编程必将成为通用技能

    正文 为什么我们要学习编程 编程是当今时代不可或缺的核心技能 它不仅仅是程序员的专属领域 而是逐渐成为一种通用技能 被越来越多的人所需 想象一下 不久的将来 编程将变成人人都会的事情 而职业编程人员会逐渐减少 就像识字一样 编程将成为人们必
  • 用Java实现分页

    查询完全表之后 接下来要做的是查询总条数 和当前是第几页 总共有几页 包括数据 通过Java思想将封装为类 然后调用 pageBean java类可以当做通用的分页的类 Service作用是封装一类服务 比如说注册或者说登录 它是一类服务
  • IMS中Binder案例

    IMS中Binder案例 1 FWK层中AIDL形式 1 1 服务端实现Stub 1 2 客户端获取proxy 2 Native层中AIDL形式 2 1 服务端对应Bn端 2 2 客户端对应Bp端 android12 release 1 F
  • C++指针的使用

    一 指针的定义和使用 可以通过指针来保存一个变量的地址 例如 int a 2 就相当于内存中分出了一个内存块给变量a 而这个内存块中储存的数值为2 假设这个内存块的地址为0x2e 则可以通过定义一个指针来储存这个地址0x2e 指针就是一个地
  • Qt GraphicsView图形视图框架(Graphics View Framework)

    Graphics View提供了一个surface 用于管理大量定制的2D图形项并与之交互 还提供了一个View小部件 用于可视化项目 并支持缩放和旋转 该框架包含一个事件传播框架 该架构允许对场景中的项目提供精确的双精度交互功能 项目可以
  • IP地址总结

    IP地址分类 IP地址的编码分为两部分 网络号和主机号 A类地址默认子网掩码 255 0 0 0 B类地址默认子网掩码 255 255 0 0 C类地址默认子网掩码 255 255 255 0 D类默认子网掩码 255 255 255 25
  • 数学实验-迭代(Mathematica实现)

    一 实验名称 迭代 二 实验环境 Mathematica 10 3软件 三 实验目的 本实验通过Mathematica 10 3软件利用迭代求解方程的近似解 了解迭代方法在解决问题的收敛速度的异同 认识到函数的迭代是数学研究中的一个非常重要
  • P2P和CS架构

    P2P架构 Peer to Peer 特点 1 没有服务器 2 任意端系统直接通信 3 节点阶段性接入internet 4 节点可能更换ip地址 优缺点 优点 动态和随机性 缺点 难以管理 P2P和CS进行文件分发的比较 当文件数增多时 P
  • CSAPP阅读笔记——第二章:信息的表示和处理

    核心内容 编码原则 无符号 补码 浮点 溢出 无符号 补码 精度 浮点 一 信息存储 字节 存储最小单元 程序的内存管理是在虚拟地址层面上 字长 用于指明整数和指针数据的大小 编码虚拟地址 决定虚拟地址空间大小 数据大小 编码数字的格式 其