2019-2020-1 20175212童皓桢 《信息安全系统设计基础》第4周学习总结
教材学习内容总结
1.进制转换
人工运算时,可用二进制为媒介
2.三种运算
-
位级运算
& | ~ ^(异或)
逐位进行运算 -
逻辑运算
&& || !
只有1和0 -
移位运算
逻辑右移:左端补k个0
算数右移:左端补k个最高有效位
3.信息=位+上下文
-
无符号整数
-
有符号整数
最高位为符号位 -
浮点数
IEEE浮点表示:V=(-1)^s *M * 2^E
s:符号
M:尾数
E:阶码
优势:可表示较大的数字
4.数值运算
- 无符号整数的运算
- 有符号整数的运算(补码运算)
5.信息的存储
- 大端和小端
小端法:高字节保存在内存的低地址中
大端法:与小端法相反 - 网络字节库和主机字节库
网络字节序时大段字节序,大段机器传输可以不转换,小段机器传输则需要字节序转换.
htons() 对于unsigned short类型 主机序->网络序
htonl() 对于unsigned short类型 主机序->网络序
ntohs() 对于unsigned short类型 主机序->网络序
ntohl() 对于unsigned short类型 主机序->网络序
教材学习中的问题和解决过程
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
- 问题1:IEEE浮点表示如何解决较大数的问题
- 问题1解决方案:IEEE通过记录权值,类似科学计数法
- 问题2:作为发送方,如何判断大端还是小端模式
- 问题2解决方案:有两种方法:
1.强制类型转换(ppt中提到的方法)
void funtest1()
{
int i = 1;
char* j = (char*)&i;
if (*j == 1)
{
printf("小端存储
");
}
else
printf("大端存储
");
}
2.利用联合体性质:不同类型变量共享同一块内存
void funtest2()
{
union UN
{
int i;
char c;
}u;
u.i = 1;
if (u.c == 1)
{
printf("小端存储
");
}
else
printf("大端存储
");
}
代码调试中的问题和解决过程
- 问题1:代码运行与预期功能有偏差
#include<stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, size_t len) {
size_t i;
for(i = 0;i<len;i++)
printf(" %.2x",start[i]);
printf("
");
}
void show_int(int x) {
show_bytes((byte_pointer) &x,sizeof(int));
}
void show_float(float x){
show_bytes((byte_pointer) &x,sizeof(float));
}
void show_pointer(void *x){
show_bytes((byte_pointer) &x,sizeof(void *));
}
void test_show_bytes(int val) {
int ival = val;
float fval = (float) ival;
int *pval = &ival;
show_int(ival);
show_float(fval);
show_pointer(pval);
}
int main(){
int a;
scanf("%d
",&a);
void test_show_bytes(a);
}
- 问题1解决方案:
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...
代码托管
上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ...
其他(感悟、思考等,可选)
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 51/51 | 1/1 | 20/20 | |
第二周 | 32/83 | 1/2 | 18/38 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)