2.4.10 Thao tác với bit đơn lẻ (5)

# 2

Reset bit của bạn – tức là bạn phải gán giá trị 0 cho bit đó mà không làm cho tất cả các bit khác thay đổi; chúng ta sẽ vẫn sử dụng thuộc tính của phép hợp như phần #1, nhưng chúng ta sẽ sử dụng mask (mặt nạ) hơi khác – nó sẽ như thế này:

1111111111111111111111111111110111

Nếu chú ý bạn sẽ thấy rằng mask này đã được tạo ra như là kết quả của phép phủ định của tất cả các bit của biến TheMask (ở #1).
Công việc sau đó là reset bit sẽ trở nên đơn giản, và nó sẽ được thực hiện bằng một trong các cách sau(hãy chọn 1 cách mà bạn thích) →

FlagRegister = FlagRegister & ~TheMask; 

FlagRegister &= ~TheMask;

 

#3

Set bit của bạn – tức là bạn cần gán giá trị 1 cho bit đó mà không làm cho tất cả các bit khác thay đổi; chúng ta sẽ sử dụng thuộc tính của phép tuyển để xử vụ này.

x | 1 = 1

x | 0 = x

Chúng ta sẽ set bit lên như sau →

FlagRegister = FlagRegister | TheMask; 

FlagRegister |= TheMask;

 

#4

Để đảo bit của bạn – thay đổi giá trị từ 1 thành 0 và ngược lại thì chúng ta sẽ phải sử dụng một thuộc tính rất hay ho của phéo xor

x ^ 1 = !x

x ^ 0 = x

Bạn sẽ đảo bit như sau →

FlagRegister = FlagRegister ^ TheMask; 

FlagRegister ^= TheMask;