• 信息的表示和处理


    重点题目:

    2.4、2.6、2.8、2.11、2.13、2.14、2.18、2.19、2.21、2.23、

    2.24、2.25、2.27、2.29、2.33、2.34、2.39、2.40、2.42、2.43、

    2.44、2.45、2.47、2.50、2.52、2.54

    p20: 三种数字:无符号数、有符号数(2进制补码)、浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞

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

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

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

    p28: 代码执行一下

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

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

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

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

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

    p48: 怎么样让负数等于正数? 信息安全的逆向思维

    p49: 0扩展和符号扩展

    p52: 深入思考一下代码和结果

    p54: 如何让整数运算溢出?如何避免? p62例子看看

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

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

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

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

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

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

    p80:家庭作业

    十进制转十六进制代码及运行结果:

    书本28页show_bytes运行结果:

    35页2.11代码及运行结果:

    gdb单步跟踪:

    得出最后一步循环进行后first为3,last为1,即最后一步是2与2交换即自己与自己交换,又因为任何一个数异或自己为0,故得数为0。

    将first<=last改为first<last可得正确结果:

    90页习题2.65:当x有偶数个1时输出1,否则输出0。

    代码:

     测试数据:

    0=00000000

    3=00000011

    167=10100111

    243=11110011

    原理:

    在假设int有32位的情况下,第一次异或的结果得出每两位1的个数的奇偶性,以末两位为例,若末两位为偶数个1,则得数最后一位为0,以此类推;

    同理第二次异或得出每四位1的个数的奇偶性,以末四位为例,若末四位为偶数个1,则得数最后一位为0,以此类推;

    ......

    五次异或后,最后一位得出所有32位的1的奇偶性,若有偶数个1,最后一位为0,否则为1,将得数与1异或为返回值。

  • 相关阅读:
    docker运行爬虫代码
    python语法之流程控制(if while for)
    python基本数据类型
    python基本运算符
    python用户交互与格式化输出
    jieba模块基本介绍
    wordcloud库基本介绍
    计算机基础之编程语言
    计算机基础
    python入门之流程控制
  • 原文地址:https://www.cnblogs.com/huyufeng/p/4857379.html
Copyright © 2020-2023  润新知