• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

20145208蔡野

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

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

教材学习内容总结

p20: 三种数字:无符号数、有符号数(2进制补码)、浮点数,因为算数运算的微妙细节引发漏洞,增加精度弥补细节可以减少漏洞。

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

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

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

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

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

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

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

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

p48: 怎么样让负数等于正数? 第二个是无符号运算的话,第一个也会被隐式地转换为无符号数。

p49: 0扩展和符号扩展

  • 0扩展:多用于无符号数转换为一个更大的数据类型。只需在开头加上0即可。
  • 符号扩展:多用于补码数字转换。最高有效位是什么,就添加什么。
    p52: 深入思考一下代码和结果
  • 运行代码会出现核心已转存的提示

  • 检查发现是调用函数的方法不好,用了printf("%f",sum(a,length)),换成sum(a,length)且在里面加上一句printf函数就好了

  • 需要注意的是,同一个变量的类型一定要相同,比如数组的就都用float定义,要不然运行结果会不正确

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

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

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

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

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

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

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

P24页perl文件运行问题

  • 第一次写perl脚本,运行上面出了不少问题,先是找不到文件

  • 网上查到说要改第一行目录,于是搜索自己的系统中perl解释器的安装目录进行替换

  • 后来提示解释器权限不够,用chmod修改了权限也还是一样,但是搜索了一些perl文件执行的样例,尝试了一下加上perl再执行,成功:

P28页代码问题

  • 编译的时候出现如下错误

  • 经查找错误类型发现是函数构造的问题,可以构造一个main函数解决。
  • 然而输出结果如下,应该是没有赋值x的原因:

  • 赋值后结果如下:

p35 练习2.11

  • 在运行的时候发现奇数个的时候中间数值会是0,偶数正常

  • 调试发现由于在最后一次调用inplace_swap的时候,赋值给first和last变量的都是原数组中最中间的数字,所以在第一处*y = x^y时,y指向的数字就变为了0,此后,0作为最中间数字进入循环。

  • 只要把first<=last 改为first<last就可以解决了:

p44 代码放到一个main函数中,可以用GDB单步跟踪一下,理解更深刻

p47/p49代码放到一个main函数中,可以用GDB单步跟踪一下,理解更深刻

代码托管

代码行数截图

代码托管截图

代码托管网址

20145208蔡野的代码托管网址

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/2 20/20 学会了虚拟机安装和Ubuntu的基本操作
第二周 56/56 1/3 20/40 学会了Ubuntu终端下的C语言编写
第三周 110/166 1/4 30/70 熟悉了gdb的基本操作,了解了计算机信息表示和处理

参考资料

  • 2016-2017-1 《信息安全系统设计基础》教学进程
  • 实验楼实验三文档

posted on 2016-09-28 15:45  20145208蔡野  阅读(275)  评论(3)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3