/* 描述:编写一个温控报警程序,根据给定的三个32位寄存器的值reg1、reg2、reg3,以及报警调值 alarm 进行判 断,其中,reg1的第八位为状态位,状志位置1,表示传感器失效,reg2的0~3位为高位,reg3 的第 24~31位为 :位。温度寄存器的精度为0.1,范围为[-204, 204],需要计算温度的值,并判断温度是否大于报警调值,如果大于报 警闯值,则输出tue,否则输出false。状态位置1,直接输出ture 输入:reg1、reg2、reg3 的值(无符号32位整数,16进制表示),以及报警阈值alam(32 位有符号整数,10进 制表示)。输出:布尔值,表示温度是否大于报警值。 输入:88 18000A1F 12345678 120 解释:根据给定的奇存器值,可以提取温度的高位为0x,低位为0x12,计算得到温度值为181.8、由于温度值大于输出:tue报警阈值 120,因此输出 tue. 输入:88 12000a1a df12fe2d 120解释;根据给定的寄存器值,可以提取温度的高位为0xa,低位为0xd,计算得到温度值为74.3。由于温度值小于编出:false报警國值 120,因此输出false。 */ #include using namespace std; int main() { unsigned int reg1,reg2,reg3; cin >> hex >> reg1 >> hex >> reg2 >> hex >> reg3; int alarm; cin >> dec >> alarm; if(reg1 & 0x100){ cout << "true" << endl; cout << "111" << endl; } else{ reg2 &= 0x0f; reg3 &= 0xff000000; reg3 = reg3 >> 24; reg2 = reg2 << 8; unsigned int tmp = (reg2 + reg3); unsigned int tmp2 = tmp - 0x7f8; if(tmp2 > alarm*10)cout << "true" << endl; else cout << "false" << endl;; } return 0; }