C++ 位操作与操作小练习,控制8盏灯的开关
标签:其他 signed cout 否则 ios 图片 printf 查询 std
#include using namespace std;
#includestring>
//判断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盏灯的开关
标签:其他 signed cout 否则 ios 图片 printf 查询 std
原文地址:https://www.cnblogs.com/shenji/p/12684831.html
评论