zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165323 《信息安全系统设计基础》第二周学习总结

    第二章学习总结

    信息存储

    1、机器级程序将内存视为一个非常大的字节数组,称为虚拟内存。内存的每个字节都由一个唯一的数字来标识,称为它的地址。所有可能地址的集合就称为虚拟地址空间。
    2、每个程序对象可以简单地视为一个字节块,而程序本身就是一个字节序列。

    字数据大小

    1、字长:指明指针数据的标称大小。决定最重要的系统参数就是虚拟地址空间的最大大小。对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w个字节。
    2、32位字长限制虚拟地址空间为4千兆字节。
    3、64位机器运行32位机器编译的程序

    gcc -m32 prog.c
    4、C语言允许多种关键字的顺序,下列声明都是一个意思:
    unsigned long
    unsigned long int
    long unsigned
    long unsigned int

    寻址和字节顺序

    1、在几乎所有的机器上,多字节对象被存储为连续的字节序列,对象的地址为所使用字节中最小的地址
    2、小端法:最低有效字节在最前面的方式(高对高,低对低)
    3、大端法:最高有效字节在最前面的方式(高对低,低对高)

    表示字符串

    1、C语言中的字符串被编码为一个以null(其值为0)字符结尾的字符数组。每个字符都由某个标准编码来表示,最常见的是ASCII字符码。
    2、在使用ASCII码作为字符码的任何系统上都会得到相同的结果,与字节顺序和字大小规则无关
    3、二进制代码是不兼容的
    4、从机器的角度来看,程序仅仅只是字节序列

    移位运算:

    1、逻辑右移:右移N位,就在高位补N个0
    2、算术右移:右移N位,就补N个最高位的值
    3、在JAVA中,x>>k会将x算术右移k个位置,而x>>>k会对x做逻辑右移

    数据表示

    1、无符号数
    B2U = 每一位的权值之和
    2、有符号数
    B2T = 最高有效位代表正负值+各位的权值

    补码与无符号数的相互转换

    当执行一个运算时,如果它的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式地将有符号参数强制类型转换为无符号数,并假设这两个数都是非负的,来执行这个运算

    数字的扩展

    要将一个无符号数转换为一个更大的数据类型,我们只要简单地在表示的开头添加0,这种运算被称为零扩展
    无符号数的零扩展和补码数的符号扩展

    数字的截断:截断无符号数;截断补码数值

    整数运算

    1、无符号加法:

    2、有符号数的加法
    转换为两个数的补码相加

    3、无符号乘法
    将一个无符号数截断为w位等价于计算该值模2^w

    4、补码加法

    5、浮点数
    IEEE浮点表示

    用 V = (-1)s * M * 2 E

    符号决定正负,M为二进制小数,E是阶码

    C语言中的浮点数

    double与float 双精度与单精度

    int、float、double转化时有可能出现数据丢失的情况
    6、当在int、float、和double格式之间进行强制类型转换时,程序改变数值和位模式的原则如下:
    1、从int转换成float,数字不会溢出,但是可能被舍入
    2、从int或float转换成double,因为double有更大的范围,也有更高的精度,所以能够保留精确的数值
    3、从double转换成float,因为范围要小一些,所以值可能溢出成正无穷或负无穷。
    4、从float或者double转换成int,值将会向零舍入

  • 相关阅读:
    接口框架项目示例
    接口框架开发流程总结
    requests库的简单使用
    使用flask创建简单的接口
    session和token
    解决log函数生成重复log的问题
    自定义封装logging参考
    织梦dedecms做的网站首页标题篡改跳转赌博网站解决方案
    织梦网站安全查杀
    织梦重置密码的方法和织梦网站后台登陆账号修改方法
  • 原文地址:https://www.cnblogs.com/asd65360323/p/9733620.html
Copyright © 2011-2022 走看看