zoukankan      html  css  js  c++  java
  • 2017-2018-1 《信息安全系统设计基础》 20155322 十六周 课上实践

    2017-2018-1 《信息安全系统设计基础》 20155322 十六周 课上实践


    [博客目录]


    一、题目


    返回目录

    二、原理

    这里主要考察的知识点为提取位,即提取一串二进制数中固定的位数。
    这里先放上一张老师PPT上的图片:

    由图可知,0-4位为秒,5-10位为分钟,11-15位为小时,那么,我们要提取其中的秒分时该怎么做呢?
    首先我们需要明白一点:与1&为置1,与0&为置0,然后再进行计算:

    提取秒:

    由于Seconds占低5位,只用&上1F(0000 0000 0001 1111)取出Seconds的全部5位

        00000 000000 11111
    &  xxxxx  xxxxxx  xxxxx
    =  00000 000000 xxxxx
    

    提取分

    由于Seconds占5位,因此需要先右移5位将Minutes的最低位与位0对齐,再&上3F(0000 0000 0011 1111)取出Minutes的全部6位

        xxxxx xxxxxx xxxxx >>>5
    =  00000 xxxxx xxxxxx
    ------------------------
        00000 00000 111111
    &  00000 xxxxx xxxxxx
    =  00000 00000 xxxxxx
    

    提取时:

    由于Seconds占5位,Minutes占6位,因此需要先右移11位将Hours的最低位与位0对齐,再&上1F(0000 0000 0001 1111)即可将5-15位全部清0从而取出Hours的全部5位

    假设Hours的5位全为C,Minutes的6位全为B,则:

        xxxxx xxxxxx xxxxx >>>11
    =  00000 000000 00000
    ------------------------
        00000 000000 11111
    &  xxxxx xxxxxx xxxxx
    =  00000 000000 xxxxx
    

    返回目录

    三、实现

    时的设置及提取

    #define TIME_Addr  0xFFFFC0000                    //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *) (TIME_Addr+2)      //时间存放在基址+2的寄存器中
    
    void SetHours(int hours)
    {
        int oldtime = TIME;
        int newtime = oldtime & ~ (0x1F << 11);
        newtime |= (hours & 0x1F) << 11;
        TIME = newtime;
    }
    
    int getHours()
    {
        int time;
        time = (time>>11) & 0x1F;
        return time;
    }
    

    秒的设置及提取

    #define TIME_Addr  0xFFFFC0000                  //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *) (TIME_Addr+2)    //时间存放在基址+2的寄存器中
    
    void SetSeconds(int seconds)
    {
        int oldtime=TIME;
        int newtime=oldtime&~0x1F;
        newtime|=seconds&0x1F;
        TIME=newtime;
    
    }
    int getSeconds()
    {
        int time;
        time=time&0x1F;
        return time ;
    }
    

    返回目录

    四、代码链接

    码云链接
    返回目录

  • 相关阅读:
    php公立转农历
    php判断客户端浏览器类型
    php为图片添加水印
    php类精确验证身份证号码
    webpack脚手架搭建(简单版)
    《深入浅出Node.js》第4章 异步编程
    js 实现继承相关
    设计模式:观察者模式
    bind 方法实现
    用 CSS 实现字符串截断
  • 原文地址:https://www.cnblogs.com/blackay03/p/8207237.html
Copyright © 2011-2022 走看看