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

    课本学习笔记

    学习疑问及解决

    • 逻辑运算是否按位运算?
      • 答:不是,例如将0x40看成是一个数,这个数非1即0.因此计算时只有0x00与0x01两种结果
    • C语言中浮点数向零舍入取整的方法
      • 思路就是先把double强转成unsigned,然后再把unsigned重新强转成int。参考代码见这里
    • 阶码的作用
      • 阶码指明了小数在数据中的位置

    练习

    • 2.96
      由于不会写,我在网上找到了类似题目要求的代码
    #include <stdio.h>
    
    typedef unsigned float_bits;
    #define TMin 0x80000000
    
    int float_f2i(float_bits f)
    {
        unsigned sign, exp, frac, last_bit;
        int i;
    
        sign = f >> 31;
        exp = (f >> 23) & 0xff;
        frac = f & 0x7fffff;
    
        if (exp == 158 && frac == 0 && sign == 1)  //处理f = TMin的情况
            i = TMin;
        else if (exp > 157 || exp == 0xff)  //处理f上溢出或f是NaN的情况
            i = TMin;
        else if (exp < 126)  //处理f下溢出
            i = 0;
        else
        {
            exp -= 127;
            frac |= 0x800000;
            if (exp > 23)
            {
                exp -= 23;
                frac <<= exp;
            }
            else if (exp < 23)
            {
                exp = 23 - exp;
                frac >>= exp;
            }
            if (sign == 1)
                i = (~frac) + 1;
            else
                i = frac;
        }
        return i;
    }
    int main(void)
    {
        unsigned i;
        int j, k;
        float f;
    
        for (i = 0x3fbfff70U; i <= 0xffffffffU; i++)
        {
            f = *(float *)&i;
            j = (int)f;
            k = float_f2i(i);
            printf("%f : %d  %d
    ", f, j, k);
        }
        return 0;
    }
    

    我将它在虚拟机上实现,运行时出现以下问题——它无法停止运行。

    代码行中for循环i的意义我没弄明白。于是我尝试将循环删除,留下中间计算的值,此时选值i应该是个随机值。

    尴尬的是我试图将f变成一个键入的值时,我发现i应该是按位循环来实现判断功能的,所以我依然没有明白这段函数的输入口在哪里。。。不过大致读懂了这段代码。

    参考文档

  • 相关阅读:
    2018.11.5 Nescafe26 T1 小猫爬山
    2018.10.30 NOIp模拟赛T2 数字对
    2018.10.30 NOIp模拟赛 T1 改造二叉树
    2018/7/16 YMOI模拟 NOIP2013D2T3华容道
    数据结构实验
    我的第一个博客
    题解 P5035 【金坷垃】
    题解 P5036 【随机生成树】
    题解 P5037 【抓捕】
    题解 P1328 【生活大爆炸版石头剪刀布】
  • 原文地址:https://www.cnblogs.com/wangyaojia/p/9733673.html
Copyright © 2011-2022 走看看