zoukankan      html  css  js  c++  java
  • # 2017-2018-1 20155232 《信息安全系统设计基础》第三周学习总结

    2017-2018-1 20155232 《信息安全系统设计基础》第三周学习总结

    教材学习内容总结

    本周学习第二章:
    主要内容就是信息的表示和处理,信息的存储,16进制表示法,寻址,c语言中的运算以及数据的表示。

    • 最低有效字节在前--小端法

      最高有效字节在前--大端法

    • 强制类型转换:允许以数据类型引用一个对象,而这种数据类型与创建这个对象时定义的数据类型不同。

    • c语言中的运算:

    1、布尔运算

    2、位级运算

    3、逻辑运算

    4、移位运算

    5、有符号数和无符号数间转换

    6、整数运算

    7、浮点运算

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

    (一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

    • 问题1:

    在看过课本上内容有关计算溢出的解释,当结果太大时以至于不能表示,所以某些运算会发生溢出的情况。那么在学习c语言的时候,会说到越界,越界和溢出有什么区别?

    • 问题1解决方案:

    在上网查询相关资料后,搜索到:
    溢出本义是算术溢出(arithmetic overflow),指算术计算结果无法在一定范围内表示,细分上溢(overflow)和下溢(underflow)。
    越界即访问越界(access out of range),指对存储的访问不在预先指定的界限内。
    逻辑上来说可能造成访问越界的计算结果也可以看成一种溢出,这是引申义。只不过两种情况经常一起出现,所以混用了。
    栈溢出(stack overflow)是这里的一种典型情况。栈增长一端的界限一般可以直接用一个地址表示,要访问的地址超过这个阈值就是溢出,表示访问对应的存储越界。
    例如:整型32位,如果超过最大值就是溢出;越界是访问了非法的内存。
    在这个链接中有更详细生动的解释便于理解:
    越界和溢出有什么区别

    • 问题2:

    为什么int型的取值范围为-32768--32767,正数比负数绝对值小一?

    • 问题2解决方案:

    以char类型举例,其一共有8个位,最高位是符号位;那么其它7个位表示的范围是0~127; 那么考虑符号位以后,正数的范围是 +0 ~ +127,负数的范围就是-0~-127。问题出在这里:补码表示时,+0的表示与-0的表示是一样的:0取反加1后,溢出的1被舍弃,还是0;而如下的映射:f[0,x7,x6,x5,x4,x3,x2,x1]->[1,x7,x6,x5,x4,x3,x2,x1]一定是一一映射,其中x(i)取值0或1,则易见定义域的元素的个数与值域的元素一定相等。因为二进制1000 0000实际上是-128,1111 1111实际上是-1,在形如1xxx xxxx的表示中,你找不出一个0来;而形如xxx xxxx一定可以表示128个数,因此,这种“逼宫”的结果,就是负数的表示范围一定比正数大。

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

    • 问题1:在编写如下代码时,遇到了问题:

      出现错误提示。

    • 问题1解决方案:经过仔细检查后发现时gcc命令输入错误,改正后:

    • 问题2:再输入课本p54页代码后出现错误:

    • 问题2解决方案:经过仔细检查代码发现时少了括号导致出错:

    运行成功:

    • 问题3:课本代码p38页输入后:

    进行测试运行:

    查看课本后发现符合课本中描述的,若数组个数为单数时,会出现中间的数为0的情况。

    • 解决:
      在奇数个数时,因为first和last都指向中间的数字,每个元素就是他自身的加法元素(a^a=0)所以导致情况的出现,若修改:

    将原本的<=改为<,则避免了此情况。

    代码托管

    上周考试错题总结

    • Linux中,内核虚拟内存在虚拟地址空间的低端。

    A .正确

    B .错误

    正确:B 课本p13

    • 处理器的()操作可以从寄存器中复制一个字节的数据到主存中。

    A .加载

    B .存储

    C .操作

    D .跳转

    正确:B 课本p7

    • I/O设备可以通过()与I/O总线相连。

    A .控制器

    B .主存

    C .处理器

    D .适配器

    正确:AD 课本p5

    计算机中总线传送定长的数据,这个定长是(),是一个基本的系统参数。

    A .字节

    B . 字

    C .双字

    D .四字

    正确:B 课本p5

    • gcc 把源程序翻译成可执行文件的四个阶段是:预处理阶段,编译阶段,汇编阶段,链接阶段,其中汇编阶段用到的工具和相应的gcc命令是()

    A .cpp: gcc -E hello.c -o hello.i

    B .ccl: gcc -S hello.i -o hello.s

    C .as: gcc -c hello.s -o hello.o

    D .ld: gcc hello.o -o hello

    正确:C

    结对及互评

    点评模板:

    暂无

    本周结对学习情况

    - [20155215](http://www.cnblogs.com/xuanyan/p/7673751.html)
    
    - 结对学习内容
        - 共同学习课本第二章内容
        - 分析课本中代码遇到的问题
    

    思考

    这周的学习内容主要是操作系统中的信息表示和处理,看上去十分复杂,但是这些内容却是我们学习这门课的基础,我觉得主要还是在于实践,光看懂了课本显然是不够的,还需要动手自己编写代码。课本上很多代码都是只有部分,需要自己编写主函数输出等等。在编写代码上还需要多加练习。

    • 课本p31页代码

    在我自己加了主函数后,可以实现函数

    show_int ,show_float,show_pointer
    

    展示了如何使用程序

    show_bytes
    

    来分别输出类型

    int,float
    

    void*
    

    的字节表示。

    • 运行结果:

    • 课本p52页代码:


    当printf输出数值时使用%d,%u,%x输出一个数字,printf没有使用任何类型信息,所以可以使用%u来输出int的数值。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第四周 12/12 1/1 20/20
    第五周 271/283 1/2 15/15

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:15小时

    • 实际学习时间:17小时

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp
    安装eclipse插件,很慢终于找到了解决的方法
    开发辅助网站---programcreek
    java--遇到NoSuchMethodError通用解决思路
    详解SpringBoot 添加对JSP的支持(附常见坑点)
    springboot 配置jsp支持
    JS前端取得并解析后台服务器返回的JSON数据的方法
    ajax接收json数据到js解析
    1 problem was encountered while building the effective model [FATAL] Non-parseable POM F:MavenRepositoryorgapachemavenpluginsmaven-resources-plugin2.6maven-resources-plugin-2.6.pom: start tag
    新装mvn建第一个项目报错org.apache.maven.plugins:maven-resources-plugin:2.6
  • 原文地址:https://www.cnblogs.com/lsqsjsj/p/7611470.html
Copyright © 2011-2022 走看看