第三周学习总结

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

教材学习内容总结

·三种最重要的数字表示:
①无符号:基于传统的二进制方法,表示大于等于0的数字
②补码(有符号数):表示有符号数整数的最常见方法,有符号整数就是可以为正或者负的数字
③浮点数:表示实数的科学计数法的以2为基数的版本
·进制转换:用二进制做中间结果就会好转换
·对于一个字长为w位的机器,虚拟地址的范围为0~2的w次-1,程序最多访问2的w次方个字节。现在机器的字长一般是32位或者64位。
·c语言支持整数和浮点数的多种类型
·gcc -m32 可以在64位机上生成32位的代码
·小端法:最低有效字节在最前面,(高对高,低对低)。大多数Intel兼容机采用
大端法:最高有效字节在最前面,(高对低,低对高)。大多数IBM和Sun Microsystems的机器采用
双端法:将其配置成作为大端或小端的机器运行。许多比较新的微处理器采用
·逻辑运算(结果是0或1)的符号是和c语言的位级运算(结果是位向量)使用的符号相匹配的。
位向量的运算可以定义成参数的每个对应元素之间的运算
·位向量掩码:有选择的使能或是不能屏蔽一些信号。(可以用特定位置1或者清零)
·EXCLUSIVE-OR:异或
·逻辑右移:在左端补k个0
算数右移:在左端补k个最高有效位的值
无符号数:必须逻辑右移
有符号数:几乎所有机器都使用算数右移,但是逻辑右移也是可以的
Java中:x>>k(算数右移k) x>>>k(逻辑右移k)
·用C99中的“long long”类型时,编译要用 gcc -std=c99
·补码:利用补码表示有符号数,也是简化了运算,所有的运算都可用加法器实现。
在补码中,将字的最高有效位解释为负权
·补码的范围是不对称的:|TMin|=|TMax|+1
·补码的最高位是符号位,用带向左箭头的条表示。无符号数的最高有效位有正权重,用带向右箭头的条表示
·无符号数与补码相互转换结果:在0<=x<2的w次方-1范围内,T2Uw(x)=x和U2Tw(x)=x。对于这个范围之外,转化需要加上或减去2的w次方
·要创造一个无符号常量,必须加上后缀字符‘U’或者‘u’
·无符号数与有符号数之间的转换原则是底层的位表示不变
·零扩展:将一个无符号数转换为一个更大的数据类型,在表示的开头添加0
符号扩展:将一个补码数字转化为一个更大的数据类型,在表示中添加最高有效位的值的副本
·两个数的w位补码之和与无符号之和有完全相同的位级表示
·对于无符号和补码乘法来说,乘法运算的位级表示都是一样的
·二进制小数:小数点左边的数字的权是10的非负幂,得到整数值,小数点右边的数字是10的负幂,得到小数值
·IEEE浮点表示:给定了位表示,根据exp的值,被编码的值分为三种不同情况:
①规格化的值 ②非规格化的值 ③特殊值
·IEEE提供最常见精度是单精度和双精度

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

·教材P36,C语言中的逻辑运算,不理解具体是怎么进行计算的,怎么计算都得不到正确答案
解决:在询问同学后理解
&&:例如x,y,当x、y都不为0是结果为1,否则为0
||:当x、y全为0时结果为0,否则为1
!:若x等于0,运算后为1,反之
·教材P45,定义太多有点混乱,不是很理解具体到底是怎么进行运算的
·无符号运算被视为一种模运算形式
·算术运算溢出:指完整的整数结果不能放到数据类型的字长限制中去
·阿贝尔群:模数加法形成的一种数学结构

代码调试中的问题和解决过程

·在运行P28的代码时,刚开始按照书上的代码全打完开始运行,结果出现如下图

发现是没有main函数,于是自己编写了简单的main函数

再次编译,编译成功

·P30页代码,自己修改编译后,出现warning,但可以编译出结果,自己修改的代码及编译结果如下图

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

·P44页习题2.18,因为看不懂汇编代码的意思,所以不知该如何转换

本周代码托管

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

 本周内容较多,有部分概念有点混淆,运算有点问题

学习进度条

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

参考资料

posted @ 2016-09-28 21:02  20145332卢鑫  阅读(357)  评论(4编辑  收藏  举报