zoukankan      html  css  js  c++  java
  • 第四周学习任务报告

    学习计时:共9小时

    读书:3小时

    代码:1小时

    作业:3小时

    博客:2小时

    第二章 信息的表示和处理

    三种重要的数字表示:无符号编码,补码编码(有符号),浮点数编码

    当结果太大不能表示时会溢出,大量安全漏洞都是由于算数运算引发的

    2.1 信息存储

    最小的可寻址存储器单位:字节

    虚拟存储器:每个字节都由唯一的数字标识,称为地址

    虚拟地址空间:所有可能地址的集合

    每个程序对象可视为字节块,程序本身是一个字节序列

    2.1.1 十六进制表示法

    0x...

    当x是2的非负整数二次幂时,将n写作i+4j的形式,j表示0的个数

    i=0 :1      i=1 :2    i=2 :4     i=3 :8

    进制转换代码

    2.1.2 字

    字长:指明整数和指针数据的标称大小

    字长为w,虚拟地址范围:0~2的w次方-1,最多访问2的w次方个字节

    大多数计算机字长为32位,实验楼为64位

    gcc -m32 可以在64位机上生成32位的代码

    2.1.3 数据大小

    见书p26图2-3

    两种不同的浮点数格式:单精度 双精度

    格式:4字节 8字节

    2.1.4 寻址和字节顺序

    小端法:最低有效字节在最前面,高对高,低对低

    大端法:最高有效字节在最前面,相反

    反汇编器:确定可执行程序文件所表示的指令序列的工具

    C 强制类型转换

    sizeof 确定对象使用字节数

    不同的操作系统有不同的分配规则,结果相同,指针值却完全不同

    字节模式 整型 0x00003039  浮点数 0x4640E400

    2.1.5 表示字符串

    字符串:以null字符结尾的字符数组

    文本数据比二进制数据具有更强的平台独立性

    库函数strlen不计算终止的空字符

    2.1.6 表示代码

    二进制代码是不兼容的,很少能在不同操作系统间移植

    2.1.7 布尔代数简介

    与 或 非 异或

    位向量:表示有限集合

    2.1.8 C语言中的位级运算

    确定一个位级运算最好的方法:将十六进制的参数扩展成二进制表示并执行二进制运算,然后再转换回十六进制

    常见用法:掩码运算

    掩码:位模式,从一个字中选出的位的集合

    2.1.9 C语言中的逻辑运算

    0 false 非0 true

    如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值

    2.1.10 C语言中的移位运算

    <<    >>

    逻辑右移:左端补0

    算数右移:左边补最高有效位

    对于无符号数据,右移必须是逻辑的

    2.2 整数表示

    两种方式

    2.2.1 整型数据类型

    可表示负数,零,和正数

    取值范围中,负数的范围比整数大1

    2.2.2 无符号数的编码

    重要属性:每个介于0~2的w次方-1之间的数都有唯一一个w位的值编码(双射函数)

    2.2.3 补码编码

    最常见的有符号数的计算机表示方式就是补码形式

    将字的最高有效位解释为负权

    最高有效位:符号位

    权重-2的位数次方,是无符号表示中权重的负数

    最小值[10...0] 最大值[01...1]

    UMax TMin TMax

    P42页表

    |TMin|=|TMax|+1

    UMax=2TMax+1

    2.2.4 有符号数和无符号数之间的转换

    数值可能会改变,但是位模式不变

    这一段没太看懂

    2.2.5 C语言中的有符号数与无符号数

    大多数数字都默认为有符号的

    要创建一个无符号常量,要加上后缀U或u

    转换的原则是底层的位保持不变

    如果一个运算一个有符号一个没符号,会将有符号强制转换为无符号

    2.2.6 扩展一个数字的位表示

    在不同字长的整数之间转换,同时又保持数值不变

    无符号数:开头添0(零扩展)

    补码:添加最高有效位值得副本(符号扩展)

    2.2.7 截断数字

    减少一个数字的位数

    截断一个数字会改变值(溢出)

    2.3 整数运算

    2.3.1 无符号加法

    可以被视作一种模运算形式

    溢出:完整的整数结果不能放到数据类型的字长限制中去

    2.3.2 补码加法

    2.3.3 补码的非

    2.3.4 无符号乘法

    2.3.5 补码乘法

    2.3.6 乘以常数

    2.3.7 除以2的幂

    道理都懂,不再详述

    公式不太懂,还有那个立体的图也看不太懂,赶作业匆忙,回头再研究

    2.4 浮点数

    对形如V=x*2的y次方的有理数进行编码

    2.4.1 二进制小数

    重点掌握表示方法,p69表

    2.4.2 IEEE浮点表示

    标准:V=(-1)的s次方*M*2的E次方

    符号:s决定正(0)负(1)

    尾数:M是二进制小数

    阶码:E的作用是对浮点数加权

    情况1:规格化的值:当exp的位模式既不全是0,也不全是1

    情况2:非规格化的值:阶码域全0

    情况3:特殊值:阶码全1

    2.4.3 数字示例

    2.4.4 舍入

    找到最接近的匹配值

    四种舍入方式

    默认方法找到做接近的匹配,其他三种用于计算上界和下界

    向偶数舍入(默认):向上舍入,向下舍入

    2.4.5 浮点运算

    不具有结合性

    满足了单调性

    只有有限的范围和精度

    2.4.6 C语言中的浮点数

    float double

    遇到的问题:

    1.虽然想要在虚拟机里运行代码,但是还是无法解决敲进代码退不出来的问题,于是只好在windows操作

    2.补码编码,有符号数和无符号数之间的转换,这部分,没有看懂,感觉有点乱,习题2.19不会

    3.公式基本都看不懂,数学学得不好

    4.整数运算部分公式太多,似懂非懂,题还凑合能做

    5.这么多不懂主要是这次时间太赶了,明天一早7点就要走了。。。

    心得体会:这次作业做得太赶了,有些东西没有深入的理解,没有时间反复钻研了,所以很多都看不懂,等十一回来再找时间研究。第二章内容很丰富,明明提到了我们熟悉的许多C语言以及Java的知识,却给了我们新的视角看看待它们。书读得有点累,可能因为讲的太深了,一遍肯定是不能全懂的。

  • 相关阅读:
    [Oracle]跨越 DBLINK 访问表时,数据缓存在何处的Data Buffer 中?
    [Oracle]查看数据是否被移入 DataBuffer 的方法
    [Oracle]如何为数据库设置Event(eg: ORA-00235)
    [Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION
    [Oracle]OpenVMS 运行 Oracle 时的推荐值
    [Oracle]System 表空间的文件丢失
    [Oracle]如果误删了某个数据文件,又没有被备份,能否恢复?
    OFS环境,删除Resource 时出现错误失败,应该如何继续
    基于酷Q的工作秘书机器人
    C++编写简单的俄罗斯方块游戏
  • 原文地址:https://www.cnblogs.com/javablack/p/4850568.html
Copyright © 2011-2022 走看看