#include <stdio.h>
int main() {
int registerValue; // Giá trị thanh ghi (0-255)
int bitPosition; // Vị trí bit (0-7)
int mode; // 0: Clear, 1: Set
// 1. Nhập dữ liệu từ bàn phím
// Định dạng nhập: Giá_trị Vị_trí Chế_độ
if (scanf("%d %d %d", ®isterValue, &bitPosition, &mode) != 3) {
return 1; // Thoát nếu nhập sai
}
// 2. Xử lý logic
if (mode == 1) {
// SET BIT: Dùng toán tử OR (|)
// Dịch số 1 sang trái 'bitPosition' lần, rồi OR vào giá trị gốc
registerValue = registerValue | (1 << bitPosition);
}
else if (mode == 0) {
// CLEAR BIT: Dùng toán tử AND (&) và NOT (~)
// Dịch số 1 sang trái, đảo ngược bit (~) để tạo mask, rồi AND vào giá trị gốc
registerValue = registerValue & ~(1 << bitPosition);
}
// 3. In kết quả ra màn hình
printf("%d\n", registerValue);
return 0;
}
Input
10 3 1
Expected Output
10