2019-2020-1 20175204 《信息安全系统设计基础》第二周学习总结
学习目标
1.理解二进制在计算机中的重要地位
2.掌握布尔运算在C语言中的应用
3.理解有符号整数、无符号整数、浮点数的表示
4.理解补码的重要性
5.能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞
6.进一步理解“信息=位+上下文”
学习内容总结
要点:
-三种数字:
1.无符号数:基于传统二进制表示法,表示大于或者等于零的数字。
2. 补码:表示有符号整数的最常见方式。
3.浮点数:表示实数的科学计数法的以二为基数的版本。
4.为什么会产生漏洞?
计算机运算的漏洞多由于计算机算数运算的微秒细节引发的。
-进制转化:
注意拿二进制作中间结果就好转了
-字和字节顺序:
字长:一个字长指明整数和指针数据的标称大小。字长决定最重要的系统参数就是虚拟地址空间的最大大小。对一个字长为w位的机器而言,虚拟地址的范围是0~2^w-1,程序最多访问2^w个字节。
对于跨越多字节的程序对象需建立两个规则:
小端法:高对高,低对低
大端法:与小端法相反。 使字节顺序变得可见的三种方式: 不同类型的机器之间通过网络传送二进制数据时,网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则;使用反汇编器,处理整数数据的字节序列的存储字节顺序问题;当编写规避正常的类型系统的程序时。
-逻辑运算:
逻辑与(&&) 遇0为0;
逻辑或(||) 遇1为1;
逻辑非 遇0为1,遇1为0;
-位运算:
按位与(&) 二进制每一位遇0为0;
按位或(|) 二进制每一位遇1为1;
按位异或(^) 0^0=0,0^1=1,1^0=1,1^1=0;
按位取反(~) 二进制每一位取反;
-整数运算:
1.无符号加法
2.补码加法
3.无符号乘法
两个数x、y相乘且x、y的位数为w,则结果的位数为2w。
4.补码乘法
同无符号乘法。
-浮点数:
1.IEEE表示形式为:V = (-1)^s * M * 2^E
2.符号:s-符号 0为正,1为负
3.尾数:M是一个二进制小数
4.阶数:E的作用是对浮点数据加权,这个权重是2的E次幂
-教材学习中的问题和解决过程:
-1.问题: linux c编程 “stdio.h:没有该文件或目录”。
sudo apt-get install build-essential(https://blog.csdn.net/sean_y/article/details/3629028)
-代码托管(https://gitee.com/zyzgl/zyz)
原文地址:https://www.cnblogs.com/zyzgl/p/11609399.html