C++ 位操作与操作小练习,控制8盏灯的开关

#include <iostream>
using namespace std;
#include<string>

//判断1个字节某个位是0或者是1 传入一个字节和要查询的位
bool decide(unsigned char& status,int num)   
{
    // 左移操作, 并让传入的变量取与操作,如果得到的结果不为0,则表示有该位为1,否则则表示该值为0
    unsigned char mask = 1 << num; 
    return status & mask;
}

//将一个字节中的一个位置的元素置为1,并不能修改其他位的数据,
//将1左移,并使用或运算 
unsigned char Set_Eml(unsigned char& status, int num)
{
    unsigned char mask = 1 << num;
    return status | mask;
}

//将一个字节中的一个位置的元素置为1,并不能修改其他位的数据,
//将1左移并取反,并使用与运算 
unsigned char Set_Em0(unsigned char& status, int num)
{
    unsigned char mask = ~(1 << num);
    return status & mask;
}
//打印8盏灯的状态 1为亮 0为灭
void printf_status(unsigned char& status)
{
    printf("第8盏灯t第7盏灯t第6盏灯t第5盏灯t第4盏灯t第3盏灯t第2盏灯t第1盏灯n");
    for (int i = 7; i >= 0; i--)
    {
        if (decide(status, i) == 1)
        {
            cout << "  亮t";
        }
        else
        {
            cout << "  灭t";
        }
    }
    printf("n");
}
int main()
{
    //0001 0011
    unsigned char status = 0x13; 
    //将status的第3位置为1   00010111
    unsigned char status1=Set_Eml(status, 3);
    //将status的第5位置为0   00000011
    unsigned char status2=Set_Em0(status, 4);

    printf_status(status);
    printf_status(status1);
    printf_status(status2);


    return 0;
}

最后打印的结果为:

C++ 位操作与操作小练习,控制8盏灯的开关

 

原文链接: https://www.cnblogs.com/shenji/p/12684831.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ 位操作与操作小练习,控制8盏灯的开关

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/341591

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午1:09
下一篇 2023年3月2日 上午1:09

相关推荐