/ *
Our club total of 32 lamps (bitset <32>) designing a lighting system, wherein the pool 8 lights, board games 8 lights, the bar region 8 lights, lounge 8 lamp
requires the following functions:
1: be controlled independently of each lamp
2: can be opened or closed by a disposable area all lights
3: light can be acquired punch in respective regions
4: the lamp can be disposable closed open open closed lamp
* /
The Code
#include <iostream>
#include <bitset>
using std::cout;
using std::cin;
//位运算 **** 作业题
// 控制1盏灯的情况 控制那盏灯 参数i为需要控制的是第几盏灯 参数default_dll_lamp 为当前灯光的情况
unsigned oneControlOpen(unsigned num, unsigned default_dll_lamp) {
//unsigned num{ 0b00000000000000000000000000001000 }; num参数示例
default_dll_lamp |= num;
return default_dll_lamp;
}
unsigned oneControlShut(unsigned num, unsigned default_dll_lamp) {
//unsigned default_dll_lamp2{ 0b11111111111111111111111111110111 }; num参数示例
default_dll_lamp &= num;
return default_dll_lamp;
}
// 1字节8位 我们控制灯光只有2中状态 刚刚好使用16进制数F 和0
int main (){
/*
我们的俱乐部一共32盏灯(bitset<32>) 设计一个灯光系统, 其中台球8盏灯,桌游8盏灯,酒吧区8盏灯,休息区8盏灯
要求满足以下功能:
1:够独立控制每一盏灯
2:能够一次性打开或关闭一个区域的所所有灯光
3:能够获取各个区域的灯光打卡情况
4:能够一次性关闭打开的灯,打开关闭的灯
*/
// 设定开灯为1 关灯为0
// 使用 unsigned 防止位运算出现负数0补1的意外情况
unsigned default_dll_lamp{ 0b00000000001000000000000000000000 }; //默认灯光
cout << "默认灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
//unsigned all_lamp{ 0b11111111111111111111111111111111 };
//------------------------Before 单个灯光控制------------------------
default_dll_lamp = oneControlOpen(0b1000, default_dll_lamp);
cout << "开灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
default_dll_lamp = oneControlShut(0b11111111111111111111111111110111, default_dll_lamp);
cout << "关灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
//------------------------End 单个灯光控制------------------------
//------------------------Before 区域灯光控制------------------------
//区域开关灯 参数改为16进制
default_dll_lamp = oneControlOpen(0xFF, default_dll_lamp);
cout << "区域开灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
default_dll_lamp = oneControlShut(0xFFFFFF00, default_dll_lamp);
cout << "区域关灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
//------------------------End 区域灯光控制------------------------
//------------------------Before 全部灯光控制------------------------
default_dll_lamp = oneControlOpen(0xFFFFFFFF, default_dll_lamp);
cout << "全部开灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
default_dll_lamp = oneControlShut(0, default_dll_lamp);
cout << "全部关灯操作-当前灯光状态:" << std::bitset<32>(default_dll_lamp) << char(10);
//------------------------End 全部灯光控制------------------------
}