码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 小练习,按位存储时间并获取时间

时间:2020-04-12 17:02:38      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:char   std   sig   end   code   练习   bit   name   左移   

#include <iostream>
using namespace std;
#include<string>
//按位取得年份,年份用第一个字节的前7位存储,则将该字节向右移动一位即可获得
int GetYear(const unsigned char buffer)
{
    int  mask = buffer>> 1;
    return mask;
}
//按位获取月份  传入的参数,月份的存储4个位,为第一个字节的第8位和第二个字节的前三位,
//所以将第一个字节与1进行与运算获得最后一个位的值并向左移3位
//将第二个字节的值向右移动5个bit位,获得后三位的的值,两个值相加则得到月份
int GetMonth(const unsigned char* buffer)
{
    unsigned char mask = buffer[0] & 1 << 3;
    unsigned char mask1 = buffer[1] >> 5;    
    return mask+mask1;
}
//获取日期, 日期取最后5个bit位,所以要将该字节的前三位置零  则要用0x1F与运算,则得到数值并返回
int GetDay(const unsigned char buffer)
{
    unsigned char mask = buffer & 0x1F;
    return mask;
}
int main()
{
    //用2个字节来存储年月日2026年12月31日
    //126         12    31
    //1111110    1100  11111
    //1111 1101  1001  1111
    //F     D    9     F
    //0xFD        0x9F
    unsigned char buffer[2] = { 0xFD, 0X9F };

//     printf_status(buffer[0]);
//     printf_status(buffer[1]);

    unsigned int m_year = GetYear(buffer[0])+1900;
    unsigned int m_month=GetMonth(buffer);
    unsigned int m_day = GetDay(buffer[1]);

    cout << m_year << "" << m_month << "" << m_day << "" << endl;
    return 0;

}

程序运行的结果为:2026年12月31日

C++ 小练习,按位存储时间并获取时间

标签:char   std   sig   end   code   练习   bit   name   左移   

原文地址:https://www.cnblogs.com/shenji/p/12685364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!