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的知识,却给了我们新的视角看看待它们。书读得有点累,可能因为讲的太深了,一遍肯定是不能全懂的。

  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/javablack/p/4850568.html
Copyright © 2011-2022 走看看