#include <stdio.h>
#include <stdint.h>
// Định nghĩa vị trí bit cho từng trường trong register 8-bit
typedef enum {
ENABLE_BIT = 0, // bit 0
MODE_BIT = 1, // bits 1–2
SPEED_BIT = 3, // bits 3–5
RESERVED_BIT = 6 // bit 6; bit 7 mặc định là 0
} StatusBits;
// Hàm tạo register 8-bit từ enable, mode, speed
uint8_t build_register(uint8_t enable, uint8_t mode, uint8_t speed) {
uint8_t reg = 0;
// Dịch giá trị input vào đúng vị trí bit
reg |= (enable << ENABLE_BIT);
reg |= (mode << MODE_BIT);
reg |= (speed << SPEED_BIT);
// Đặt bit reserved = 0
reg &= ~(1 << RESERVED_BIT );
// Bit 7 mặc định = 0 vì reg khởi tạo = 0, không cần thao tác thêm
return reg;
}
int main() {
uint8_t enable, mode, speed;
scanf("%hhu %hhu %hhu", &enable, &mode, &speed);
uint16_t reg = build_register(enable, mode, speed);
printf("%u", reg);
return 0;
}
Input
1 2 4
Expected Output
37