20145311 《信息安全系统设计基础》第三周学习总结

教材学习内容总结

浮点数编码是表示实数的科学计数法的以二为基数的版本,浮点运算是不可结合的
小端方式:低对低,高对高
浮点数的编码方式与整型数据的二进制形式适当移位会有若干个相匹配的位序列
只要一个与非门,就可以完成所有的逻辑运算
掩码可以将特定位置1,可以置0,将位向量与相应的掩码作与运算就可以
利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算
有符号数和无符号数的转换:数值可能会改变,但是位模式不会改变(区分有符号无符号数还是依靠人的解释,也就是依靠上下文)
当参与运算时,如果一个数是有符号数,另外一个是无符号数,C语言会隐式地将有符号数转换为无符号数
无符号数转换为更大的数据类型:零扩展 补码数字转换为更大的数据类型:符号扩展
练习题2.25:我的理解是由于i是无符号数,当result-1后便转换为一个较大的无符号数,所以当i增大时,a[i]会引用到数组里不存在的数值,所以会遇到存储器错误
整数运算是一种模运算形式,表示数字的有限字长限制了可能的值的取值范围,结果运算可能溢出
浮点数的表示是不精确的,只能通过增加二进制长度来提高表示的精度,浮点运算不满足结合、性单调性
IEEE浮点标准:V=(-1)^sM2^E float(32位) double(64位)
整数与浮点数转换规则: 小数字段:丢弃开头,末位加0,凑齐23位 阶码字段:指数加上127

整数运算

一个算数运算的溢出,是指完整的整数结果不能放到数据类型的字长限制中去。判断无符号运算是否溢出,例如s=x+y(s、x、y均为无符号数),则唯一可靠的判断标准就是s<xs<y

乘以常数:对于某个常数K的表达式x*K生成代码,编译器会将K的二进制表示表达为一组0或1的交替的序列: [(0…0)(1…1)(0…0)…(1…1)],可以用以下两种形式来计算这些乘积的结果:

A:(x<<n)+(x<<n-1)+……+(x<<m)

B:(x<<n+1)-(x<<m)

除以2的幂:设x/K,令K=2^n,

当x为正数时,计算 x>>n;

当x为负数时,将x加上偏置量,即加上2^n-1(即K-1),计算** (x+偏置量)>>n**

教材学习中的问题和解决过程

P24进制转换:首先先要装下perl软件,然后直接使用perl语句对代码进行执行

P28类型转换:

在VC中加上了main函数运行了一下(转换的数为20145311)

在实验楼中关闭警告后也可以运行(转换的数为11)

P34数组逆序排列:

当数组的元素个数为偶数的时候可以正常排序

当数组的元素个数为技术时中间的一位会是0:

原因应该是这个:奇数长度的数组当first和last都在中间时,l两个指针指向的是同一个元素,调用inplace_swap的异或操作会产生0

解决方法:既然当元素个数为奇数时,first和last最终会相等,那就不要让他们相等,将循环里的<去掉就可以了,中间那个元素不用交换

P44强制类型转换位置不变,只是改变了解释这些位的方式

课后作业中的问题和解决过程

课本上练习题:

2.6:其实书上的例子已经讲述了证书与浮点数之间的转换规则:整数写成二进制形式,再表示成科学计数法形式,阶码字段:指数加上127   小数字段:丢弃开头,末位加0,凑齐23位

2.13:bis(x,y)其实就是x与y做或运算  bic(x,y)就是x&~y

2.21:当参与运算时,如果一个数是有符号数,另外一个是无符号数,C语言会隐式地将有符号数转换为无符号数

2.23:逻辑移位、算术移位的不同

书上题目还没看完,我会再看的

本周代码托管链接

其他(感悟、思考等,可选)

本周的学习内容主要是计算机中一些数的存储、计算方式,以及各种数制之间的转换,漏洞是如何产生的,这些知识有些在之前的课程中有所接触,但是通过这周的学习,更好地知道了这些信息的表示以及存储方式与程序之间的关系。

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 200/200 1/1 20/20  
第二周 300/500 1/2 18/38  
第三周 500/1000 1/3 22/60  
第四周 300/1300 1/4 30/90

参考资料

时间: 2024-10-27 00:46:02

20145311 《信息安全系统设计基础》第三周学习总结的相关文章

20135223何伟钦—信息安全系统设计基础第三周学习总结

信息的表示和处理 2.0三种数字表示 无符号:编码基于传统的二进制表示法,表示大于或者等于零的数字. 补码:编码是表示有符号整数的最常见的方式,有 符号整数就是可以为正或者为负的数字. 浮点数:编码是表示实数的科学记数法 的以二为基数的版本. 溢出(overflow)的例子:使用 32 位来表示数据类型int,计算表达式200*300*400*500会得出结果 -884 901 888. 这违背了整数运算的特性,计算一组正数的乘积不应产生一个为负的结果. 2.1信息存储 机器级程序将存储器视为一

20135210程涵——信息安全系统设计基础第三周学习总结

本次学习任务:仔细研读<深入理解计算机系统>第二章内容,掌握整数表示.浮点数表示及其运算 一.学习过程 三种重要的数字表现形式: 无符号数:编码基于传统的二进制表示法表示大于或等于零的数字. 补码:编码是表示有符号整数的最常见方法,可以是正或者是负的数字. 浮点数:编码是表示实数的科学计数法的以二位基数的版本 溢出:计算机的表示法是用有限数量的位来为一个数字编码,因此当结果太大就会导致某些运算溢出. 整数和浮点数会有不同的数学属性是因为处理数字表示有限性的方法不同. (整数是编码相对较小的数值

信息安全系统设计基础第三周学习总结

要点概括: 一.三种最重要的数字表示:    无符号数,有符号数(二进制补码),浮点数 从逆向考虑为什么产生漏洞: 结果太大不能表示时产生溢出,得到了负的结果.   二.信息存储 1.进制转换:以二进制作为桥梁. 2.字长:32位 64位 3.数据大小:单精度(4字节),双精度(8字节) 4.声明指针: 对于任何数据类型T,声明 T *p: 表明p是一个指针变量,指向一个类型为T的对象. 5.gcc –m32 可以在64位机上生成32位的代码. 6.寻址和字节顺序:    字节顺序是网络编程的基

信息安全系统设计基础第三周学习总结 ---20135334 赵阳林

第2章 信息的表示和处理 三种最重要的数字表示: * 无符号 * 补码 * 浮点数 运算: * 整数运算 * 浮点运算 对比: 整数运算只能编码相对较小的范围,但是是精确的: 浮点运算可以编码一个较大的范围,但是是近似的:浮点运算不可结合. 注意:溢出——运算位数的限制 第一节 信息存储 计算机最小的可寻址的存储器单位——字节 一个字节的值域:00H-FFH 一.十六进制表示法 1. C表示法 以0x或0X开头的数字常量为十六进制 2. 进制转换 常用进制:二进制(B),十进制(D),八进制(O

信息安全系统设计基础第三周学习总结-吕松鸿

第2章 信息的表示和处理 (一).三种重要的数字表示 无符号数:编码基于传统的二进制表示法(大于或者等于零的数字). 补码:编码是表示有符号整数的最常见方式(为正或者为负的数字). 浮点数:编码是表示实数的科学记数法的以二为基数的版本. 整数的表示虽然只能编码一个相对较小的数值范围,但是是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示是近似的表示. 大量的计算机安全漏洞都是由于计算机运算的微妙细节引发的. (二).信息存储 计算机最小的可寻址的存储器单位——字节 一个字节的值域:0

20135327郭皓——信息安全系统设计基础第三周学习总结

第2章 信息的表示和处理 三种重要的数字表现形式: 1. 无符号数:编码基于传统的二进制表示法,表示大于或等于零的数字. 2. 补码:编码是表示有符号整数的最常见方法,有符号整数就是可以为正或者是负的数字. 3. 浮点数:编码是表示实数的科学计数法的以二位基数的版本 2.1 信息储存 大多数计算机使用8位块,或者字节,作为最小的可寻址的储存器单位,而不是在储存器中访问单独的位. 虚拟储存器:机器级程序将储存器视为一个非常大的字节数组. 地址:储存器的每个字节的唯一的数字标识. 虚拟地址空间:所有

信息安全系统设计基础第三周学习总结—20135227黄晓妍

一.Vim编辑器 1.Vim的六种模式 2.Vim三种常用模式的使用方式,以及三者的切换.打开Vim即默认进入普通模式,按i进入插入模式,按esc从插入模式退出普通模式,再按:进入命令行模式. 普通模式下游标的移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 普通模式进入插入模式的方式 命令         说明 i        在当前光标处进行编辑 I        在行首插入 A       在行末插入 a       在光标后插入编辑

20135219洪韶武——信息安全系统设计基础第三周学习总结

学习过程总结 一.gcc 编译 使用C99特性时 gcc -std=c99 xxx.c 实验楼环境为64位,编译为32位机器码: gcc -m32 xxx.c 二.重点注意知识点 p20: 三种数字:无符号数.有符号数(2进制补码).浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞 p22: 进制转换,注意拿二进制作中间结果就好转了 p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码 p26: 字节顺序是网络编程的基础,记住小端是“高对高.低对低”,大端与之相反

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E