zoukankan      html  css  js  c++  java
  • 20145314郑凯杰《信息安全系统设计基础》第3周学习总结

    20145314郑凯杰《信息安全系统设计基础》第3周学习总结

    上周知识练习:(helloworld的断点调试)

    图1:

    图2:

    图3:

    教材学习内容总结

    教材第二章

    在对这一章的学习中,其主要的内容是关于数据在计算机中的存储方式,即计算机如何编码及编码方式的介绍。特别是数据处理方面的知识,这是我们今后深入学习的必要条件,也是今后所有知识的基础原理。所以对于这一章的学习,必须做到对知识理清,并进行动手练习,我的学习过程笔记如下:

    p20: 三种数字:无符号数、有符号数(2进制补码)、浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞

    答:漏洞的出现是因为不同数制之间转换存在着微小的细节差异,这些差异会导致漏洞的出现。

    p22: 进制转换,注意拿二进制作中间结果就好转了。

    需要注意。

    p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码

    p26: 字节顺序是网络编程的基础,记住小端是“高对高、低对低”,大端与之相反就可以了。

    p28: 代码执行一下:

    图4:

    代码运行结果:

    图5:

    p32: 能区分逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。

    p33: 掩码是位运算的重要应用,对特定位可以置一,可以清零

    P35:练习题:

    图6:

    p38: 要用C99中的“long long”类型,编译是要用 gcc -std=c99

    p39: 补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。

    p44: 注意C语言中有符号数和无符号数的转换规则,位向量不变。想想第一章说的 信息就是“位+上下文”

    图7:

    其结果为 v=-12345,uv=53191。

    p48: 怎么样让负数等于正数?

    答:①令第二个数是无符号运算,第一个就会自然被转换为无符号数。

    ②在数后面+U

    p49: 0扩展和符号扩展

    0扩展:简单地在表示的开头添加0;
    符号扩展:在表示中添加最高有效位的值的副本。

    p52: 深入思考一下代码和结果

    p54: 如何让整数运算溢出?如何避免? p62例子看看

    p67: 关于整数运算的最后思考

    p67: 浮点数有科学计数法的基础就不难理解,IEEE标准754

    p68: 浮点数运算的不精确性与舍入

    p70: IEEE浮点标准,float/double类型

    p74: 整数与浮点数表示同一个数字的关系

    p78: 整数与浮点数转换规则

    p80:家庭作业可以选做,协调好每题最多两人一组做,一星题目一人加一分,二星加二分,三星加三分,四星加四分

    P47/p49代码放到一个main函数中,用GDB单步跟踪:

    图8:

    图9:

    图10:

    P52 练习题2.25,修改代码如下:

    图11:

    运行结果如下:

    图12:

    图13:

    运行成功

    说明:我将程序中的for语句中 i<=length 改为 i <length

    另外还将 length-1 改为 length 避开了数据转换的微小差异 然后成功了

    至于为什么成功,原因如下:

    当参数length为0时,函数似乎应该返回0.0。然而,运行时会遇到一个存储器错误。

    因为参数length是无符号的,计算0-1将进行无符号运算,这等价于模数加法。结果等于UMax。所以这个比较总是真的,因此代码试图访问数组test的非法元素。

    对于像<和>这样的运算符,引起的错误就更不直观了。

    对于表达式-1>0U,返回的值应该是1.

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

    遇到了一个问题:

    遇见问题1:

    VS给出的说明是无法直接向int类型赋float型数值。

    然而在重新检查了一遍思路之后,我发现了是a,b两个变量打反了。于是问题解决。

    遇到问题2:

    编译结果出错:

    仔细修改后 发现两处错误,修改后,搞定!

    代码托管截图

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/50 1/2 20/20
    第二周 176/600 2/4 38/38
    第三周 /1100 /7 /60
    第四周 /1350 /9 /90
  • 相关阅读:
    iOS WKWebView与JS的交互
    iOS开发-APP图标、启动页、名字的设置
    [UIApplication sharedApplication].keyWindow和[[UIApplication sharedApplication].delegate window]区别
    iOS开发makeKeyAndVisible和makeKeyWindow区别
    iOS开发之微信第三方登录
    Xcode 10 Error: Multiple commands produce
    iOS开发WKWebView 返回H5上级页面
    iOS中nil、 Nil、 NULL和NSNull的区别
    iOS中dealloc原理
    HTTP原理及状态码汇总
  • 原文地址:https://www.cnblogs.com/5314zkj/p/5926765.html
Copyright © 2011-2022 走看看