zoukankan      html  css  js  c++  java
  • 20145216史婧瑶《信息安全系统设计基础》第3周学习总结

    20145216史婧瑶《信息安全系统设计基础》第3周学习总结

    教材学习内容总结

    • 十六进制表示法C表示法以0x或0X开头的数字常量为十六进制进制转换常用进制:二进制(B),十进制(D),八进制(O或者Q),十六进制(H)

    • 转换为二进制-十六进制相互转换,二进制的四位数字对应十六进制的一位数字。 同理,二进制与八进制的转化是三位对应一位。 但是通常情况下,进制转换都以二进制为桥梁进行转换。

    • 对于一个字长为w位的机器来说,虚拟地址的范围是0~2^w-1。程序最多访问2的w次方个字节。

    • 数据大小: 在不同字长的计算机中,相同的数据类型所占用的字节数并不相同,32位和64位的区别见书

    • 使用C99特性时 gcc -std=c99 xxx.c 实验楼环境为64位,编译为32位机器码: gcc -m32 xxx.c

    • 强制类型转换用来允许一种数据类型引用一个对象,而这种数据类型与创建这个对象的定义的数据类型不同。最好在定义的时候保持数据形式的统一

    • 表示字符串和代码: C语言中字符串被编码为一个null字符结尾的字符数组。每个字符串都由某个标准编码来表示,最常见的是ASCII字符码。

    • 位运算

    1.布尔代数 常用运算符号:`与: &或: |非: ~异或:^`

    2.位向量位向量:有固定长度为w、由0和1组成的串。位向量的应用表示有限集合。

    3.位级运算位运算:位向量按位进行逻辑运算,结果仍是位向量。位级运算的一个常见用法就是实现掩码运算,这里掩码是一个位模式,表示从一个字中选出的为的集合。 4.C语言中的移位运算: C语言标准并没有明确定义应该使用那种两类型的右移。对于无符号数据,右移必须是逻辑的。而对于有符号数据,算术的或者逻辑的右移都可以。

    • c语言中的移位运算右移

    右移分为逻辑右移和算术右移。算术左移和逻辑左移没有什么区别。逻辑右移: 在左端补k个0,多用于无符号数移位运算算术右移: 在左端补k个最高有效位的值,多用于有符号数移位运算。

    • 补码运算

    1.补码用法 加法必须确定结果太大或者太小时,应该采取什么措施 两个数的w位补码之和与无符号数之和有完全相同的位级表示。大部分计算机使用同样的机器指令来执行无符号或者有符号加法。

    思考书后问题

    • p20: 三种数字形式:无符号数、有符号数、浮点数,注意数据形式

    • p22: 进制转换,注意拿二进制运算中间结果

    • p25: gcc -m32 可以在64位机上生成32位的代码

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

    • p32: 区分逻辑运算和位运算,所有逻辑运算都可以用与、或、非表达,而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算

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

    • p38: 要用long long类型,编译是要用 gcc -std=c99p39: 补码的利用寄存器的长度是固定的特性简化数学运算

    • p44: 注意C语言中有符号数和无符号数的转换规则,位向量不变

    • p48: 第二个是无符号运算的话,第一个也会被间接地转换为无符号数。

    • p49: 0扩展和符号扩展0扩展:多用于无符号数转换为一个更大的数据类型。只需在开头加上0补位即可。符号扩展:多用于补码数字转换。最高有效位是什么,就添加什么。

    • p52: 调用函数的方法不正确

    • p67: 用IEEE标准来区分float double int的区别

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

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

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

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

    学习中遇到的问题

    一开始在编译中出现问题,main没有定义方法,导致后期gcc出现问题

     写代码出现失误,忘记了相对应的符号,使gcc在编译的时候出现错误

    vim编辑解决之后截图,得到了解决

    git代码上传

    https://git.oschina.net/sjy519/linux-program-C/tree/master

    学习进度条

     代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
    目标 3000行 30篇 300小时  
    第一周 0/0 1/2 25/40 学习了Linux基础知识和核心命令 
    第二周 0/0 0/2 0/40  
    第三周 300/300 3/5 40/80

    学习了vim、gcc、gdb指令;

    学习了信息表示和处理

  • 相关阅读:
    Mac安装Git以及Git和Github使用教程
    JMeter 聚合报告之 90% Line 参数说明
    [loj3525]喷泉公园
    dapr微服务
    Online SQL interpreter
    C# Math.Round()的银行家算法
    使用Visual Studio分析dump
    Qt高级——QTestLib单元测试框架
    深度学习:Keras入门(一)之基础篇
    前端使用a标签启动本地.exe程序
  • 原文地址:https://www.cnblogs.com/sjy519/p/5928283.html
Copyright © 2011-2022 走看看