---
# System prepended metadata

title: Bài Tập Tin Học

---

Mỗi số tự nhiên đều có thể biểu diễn lại thành tổng các số mũ của 2 (hệ nhị phân) (chỉ có 0 và 1)
Hệ nhị phân là ngôn ngữ của máy tính 
0110
1 2 3 4 5

Phép bit:
Or : hoặc (nếu trong hai số có số 1 thì là 1, nếu cả hai đều là 0 thì là 0)
And: và (cả hai cái là số 1 thì ra 1)
Xor: nếu hai cái giống nhau thì là 0, nếu hai cái khác nhau thì ra 1
Not (phủ định): ngược lại của bit hiện tại (0 thành 1 và 1 thành 0)

Hoạt động 1: ngày mai trời lạnh và có mưa

0: false
1: true

1 and 1 = 1
0 and 0 = 0
 


![image](https://hackmd.io/_uploads/HkglyAqnle.png)

--------------------------

# 1. Hệ nhị phân là gì?

- Hệ nhị phân (binary system) là hệ đếm dùng 2 chữ số: 0 và 1.
- Mỗi chữ số trong hệ nhị phân gọi là bit (binary digit) chỉ có 0 hoặc 1.
- Máy tính hoạt động dựa trên hệ nhị phân vì phần cứng điện tử chỉ có hai trạng thái: bật (1) và tắt (0).

### Cách chuyển từ số thập phân sang nhị phân
- Chia số thập phân cho 2.
- Lấy phần dư (0 hoặc 1).
- Ghi lại phần dư đó.
- Tiếp tục chia phần nguyên cho 2 đến khi bằng 0.
- Đọc các số dư ngược lại từ dưới lên trên → kết quả là số nhị phân.

Ví dụ: biểu diễn của `6` trong hệ nhị phân là `0110`
![image](https://hackmd.io/_uploads/r1w6-R5hgx.png)

`00110` và `110` sẽ tương đương nhau vì khi ta thêm số 0 vào đầu thì nó không ảnh hưởng đến giá trị

### Cách chuyển từ số nhị phân sang thập phân
![image](https://hackmd.io/_uploads/B1bHMR53lg.png)
- Đánh số lại ví trí của các bit từ phải qua trái và chỉ số bắt đầu từ 0
- Biểu diễn số thập phân của dãy bit sẽ là "chính là tổng của các bit đó nhân với 2^(chỉ số vị trí)"
- `110` => $0 \cdot 2^0 + 1 \cdot 2^1 + 1 \cdot 2^2 = 6$
![image](https://hackmd.io/_uploads/Hk1B7R9hgg.png)
![image](https://hackmd.io/_uploads/rk_rQAq2xl.png)
![image](https://hackmd.io/_uploads/rJk8mC53lx.png)
![image](https://hackmd.io/_uploads/SJ5Om05ngg.png)

Ta có thể hiểu như sau (0 false) (1 true)
- Nếu là phép OR có thể nói là `hoặc` thì chỉ cần một trong hai cái đúng thì nó sẽ ra đúng: 
    - `0 OR 1 -> 1` 
    - `1 OR 0 -> 1`
    - `0 OR 0 -> 0`
    - `1 OR 1 -> 1`
- Nếu là phép AND có thể nói là `và` thì ta cần cả hai cái phải đều đúng thì nó mới ra đúng: 
    - `1 AND 1 -> 1`
    - `0 AND 1 -> 0`
    - `1 AND 0 -> 0`
    - `0 AND 0 -> 0` 
- Nếu là phép XOR thì có thể hiểu là nếu hai cái giống nhau thì sẽ ra false
    - `0 XOR 0 -> 0`
    - `1 XOR 0 -> 1`
    - `0 XOR 1 -> 1`
    - `1 XOR 1 -> 1`
- Phép NOT tức là ta phủ định ngược lại bit hiện tại
    - `0 -> 1`
    - `1 -> 0`