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


     

    学习计时:共13小时

    读书:5

    代码:2

    作业:5

    博客:1

    一、学习目标

    1. 理解二进制在计算机中的重要地位

    2. 掌握布尔运算在C语言中的应用

    3. 理解有符号整数、无符号整数、浮点数的表示

    4. 理解补码的重要性

    5. 能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞



    二、学习资源

    (提示:可选项,如有其他相关资源请在此说明):

     

    1. 教材:第二章《信息的表示和处理》,详细学习指导见

    2. 课程资料:https://www.shiyanlou.com/courses/413   实验三,课程邀请码:W7FQKW4Y

    3. 教材中代码运行、思考一下,读代码的学习方法见

     

     

    三、学习方法

    (提示:为提高学生的学习效果,请在此处为学生提出微课程学习的具体要求或建议)

     

    1.  进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。

    2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/

    3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习

    4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题信息安全系统设计基础第三周学习总结



    四、学习任务

    (提示:请将要求学生完成的任务、测验或思考题列在此处)

    1. 阅读教材,完成课后练习(书中有参考答案)

    2. 考核:练习题把数据变换一下

    3. 加分题:课后作业最多两人一组,互相不能重复,1星题目每人最多加一分,2星题目每人最多加二分,3星题目每人最多加三分,4星题目每人最多加四分。

     

    、后续学习预告(可选):

    教材第三章《程序的机器级表示》

    、学习过程

    第二章   信息的标识和处理

    2.1  信息的储存

    1.存储器的每个字节都由唯一字节来标识,成为它的地址。所有可能地址的集合成为虚拟地址空间。其实现时间随机访问存储器(RAM)、磁盘存储器、特殊硬件和操作系统软件结合起来。

    2.十六进制表示法

    以0x或0X开头表示,字符A-F可大写可小写。

    !掌握二进制和十六进制之间的转换,二进制四位与十六进制一位相对应。

    小窍门:

     

    3.字

    字长:指明整数和指针数据的标称大小.字长决定的最重要的系统参数就是虚拟地址空间的最大大小。对一个字长为w位的机器,虚拟地址的范围为0-2^(w-1),程序最多访问2^w个字节。

    4.数据大小

     

    5.寻址和字节顺序

    小端法:在存储器中按照从最低有效字接到最高有效字节的顺序存储对象;

    大端法:在存储器中按照从最高有效字接到最低有效字节的顺序存储对象;

    举例:变量x十六进制值为0x01234567,则:

    6.表示字符串、代码

    a-z的ASC||码为0x61-0x7A。

    7.布尔代数

    用0、1表示真假,以研究逻辑推理的基本原则。

    有:~=NOT;&=AND;|=OR;^=异或。

    8.C语言中的位级运算

    !!确定一个位级表达式的结果最好的方法,就是将十六进制的参数扩展成二进制标识并执行二进制运算,然后再转换回十六进制。

     

    9.C语言中的逻辑运算

    有:||、&&、!,分别对应于OR、AND和NOT运算。

    !注意:逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE。

     

    10.C语言中的移位运算

    右移运算:x>>k;左移运算:x<<k。

    !对于无符号数据,右移必须是逻辑右移。对于有符号数据,则也可以使算术右移。

     

    2.2整数表示

    1. 无符号数编码

    2.补码编码

     

    3.扩展一个数字的位表示

    零扩展——将一个无符号数转换为一个更大的数据类型,在开头添加0。

    符号扩展——将一个补码数字转换为一个更大的数据类型,在表示中添加做高有效位置的副本。

    4.截断数字

     

    2.3整数运算

    包括无符号加法、补码加法、补码的非、无符号乘法、补码乘法、乘以常数、除以2的幂。

     1. 无符号加法是一种模运算形式。

    2. 补码加法,两个数的w位补码之和与无符号之和又完全相同的位级表示。定义字长为w的、运算数x、y上的补码加法为:

     因此,可以得出结论:

    3. 补码的非

     4. 无符号乘法

    5. 补码乘法

    6. 乘以常数

    !!注意:无论是无符号运算还是补码运算,乘以2的幂都可能导致溢出。但即使溢出,通过移位得到的结果也是一样的。

    7. 除以2的幂

    除以2 的幂通过逻辑或者算术右移来实现。但这种方法不能推广到除以任意常数。

    2.4浮点数

    1.二进制小数

    小数的二进制表示,二进制点左边的权形如2^i,而右边的数字的权形如1/2^i。

    2.IEEE浮点表示

     

    3.浮点运算

    IEEE标准定义了一些合理规则。定义1/-0将产生-∞,而定义1/+0会产生+∞。

    IEEE标准中指定浮点运算行为方法的一个优势在于,它可以独立于任何具体的硬件或者软件实现。

    浮点加法不具有结合性,这是缺少的最重要的群属性;浮点加法满足了单调性属性——如果a>=b,那么对于任何a以及x的值,除了NaN,都有x+a>=x+b。无符号或补码加法不具有这个实数(和整数)加法的属性。

    浮点乘法满足下列单调性:

     

    4.C语言中的浮点数

    三种不同的浮点数据类型:float、double、long double(对于许多机器和编译器,与double等价)。

    !当int、float和double格式之间进行强制转换时,程序改变数之和位模式的原则如下(假设int是32位的):



    作业重点题目:

    2.4、2.6、2.8、2.11、2.13、2.14、2.18、2.19、2.21、2.23、

     2.24、2.25、2.27、2.29、2.33、2.34、2.39、2.40、2.42、2.43、

    2.44、2.45、2.47、2.50、2.52、2.54

     

    七、遇到的问题及解决

     

     一开始对浮点数的运用不是很明确,然后再练习过程中2.49题让我知道了什么数不能用浮点数准确表示

    八、其他

    本周的学习任务多为书上的内容,小的知识点有很多,需要记的比较多,也有许多要掌握方法,会计算。刚开始学习的时候感觉有许多都是以前的知识,但是通过这次学习,不仅学习了一些新知识,也对原来的知识有了更深一步的了解。然后做练习的过程中,我认为是对学习知识的巩固的一个非常好的方法。习题比较多,还在钻研当中。

  • 相关阅读:
    linux下链接静态链接库
    linux消息队列操作(转)
    android 模块编译,mm 命令
    关于函数里对指针赋值的问题
    Android内核和驱动篇Android内核介绍 (转)
    pthread属性使用(转)
    MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT(转)
    linux下配置文件的读写
    从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
    封装错误信息打印的函数
  • 原文地址:https://www.cnblogs.com/lhc-java/p/4851122.html
Copyright © 2020-2023  润新知