Bộ Chuyển Đổi Nhị Phân sang Thập Phân
Chuyển đổi số nhị phân sang thập phân và thập phân sang nhị phân tức thì. Hỗ trợ số lên đến 64 bit. Bộ chuyển đổi miễn phí này cho kết quả chính xác tức thì.
Những cách làm việc của Chuổi 2 sang Chuổi 10
Chuổi 2 (thẻ 2) chỉ sử dụng các ký hiệu 0 và 1. Mực điểm mỗi chiếc được đánh giá theo một lực lượng 2, từ phải phải đến phải phải. Dẻm chuổi 2 sang chuổi 10, nhân mỗi ký hiệu chuổi 2 với giá trị địa tính của nó và tím toán kết quả.
Ví dụ: Chuổi 2 1011₂ sang chuổi 10
- Vị trí 3 (phải): 1 × 2³ = 1 × 8 = 8
- Vị trí 2: 0 × 2² = 0 × 4 = 0
- Vị trí 1: 1 × 2¹ = 1 × 2 = 2
- Vị trí 0 (phải): 1 × 2⁰ = 1 × 1 = 1
- Tổng: 8 + 0 + 2 + 1 = 11
Dẻm chuổi 10 sang chuổi 2, lặp đi lặp lại cho 2 và ghi nhận lời của mỗi lần chia là một chuổi. 11 ÷ 2 = 5 R1, 5 ÷ 2 = 2 R1, 2 ÷ 2 = 1 R0, 1 ÷ 2 = 0 R1 → đọc lại các chữ số dư từ dưới lên: 1011.
Ngôn ngữ vị trí này hoạt động theo cùng một cách như chuổi 10 — chỉ với một cơ sở khác. Trong chuổi 10 (thẻ 10), số 347 có nghĩa là 3 × 10² + 4 × 10¹ + 7 × 10⁰ = 300 + 40 + 7. Chuổi 2 sử dụng nguyên tắc này với các lực lượng 2 thay vì các lực lượng 10.
Biểu diện giá trị chuổi 2
8-bit byte là đơn vị cơ bản của lưu trữ máy tính. Dưới đây là bầu cứu giá trị chuổi 2 cho 8-bit (0–255):
| Vị trí bit | Lực lượng 2 | Giá trị thập phân |
|---|---|---|
| Bit 7 (MSB) | 2⁷ | 128 |
| Bit 6 | 2⁶ | 64 |
| Bit 5 | 2⁵ | 32 |
| Bit 4 | 2⁴ | 16 |
| Bit 3 | 2³ | 8 |
| Bit 2 | 2² | 4 |
| Bit 1 | 2¹ | 2 |
| Bit 0 (LSB) | 2⁰ | 1 |
1 byte có thể đánh giá một giá trị từ 0 (00000000₂) đến 255 (11111111₂). Hai byte (16 bit) có thể đánh giá một giá trị từ 0–65,535. Bốn byte (32 bit) có thể đánh giá một giá trị từ 0–4,294,967,295.
Bảng lực lượng 2 đã được giải thích
Cho người làm việc và khoa học số hạt, hiểu biết lực lượng 2 từ 2⁰ đến 2⁶⁴ là cần thiết để hiểu biết về việc điều chỉnh, kí hiệu dụng và giới hạn của máy tính:
| Lực lượng | Giá trị thập phân | Ý nghĩa |
|---|---|---|
| 2⁰ | 1 | Đơn vị nhỏ nhất (1 bit) |
| 2⁸ | 256 | 1 byte (0–255) |
| 2¹⁰ | 1,024 | 1 KiB (kibibyte) |
| 2¹⁶ | 65,536 | 16-bit; giới hạn cổng TCP |
| 2²⁰ | 1,048,576 | 1 MiB (mebibyte) |
| 2²⁴ | 16,777,216 | 24-bit màu (16.7M màu) |
| 2³⁰ | 1,073,741,824 | 1 GiB (gibibyte) |
| 2³² | 4,294,967,296 | 32-bit không gian địa chỉ; IPv4 tối đa |
| 2⁴⁰ | 1,099,511,627,776 | 1 TiB (tebibyte) |
| 2⁶⁴ | 18,446,744,073,709,551,616 | 64-bit không gian địa chỉ; CPU hiện đại |
Lưu ý sự khác biệt giữa các tiền tố nhị phân (KiB, MiB, GiB — lực lượng 2) và tiền tố SI (KB, MB, GB — lực lượng 10). 1 GB = 1,000,000,000 byte; 1 GiB = 1,073,741,824 byte. Sự khác biệt này khoảng 7% giải thích tại sao một ổ cứng "500 GB" sẽ hiển thị ~465 GiB trong hệ điều hành (thường sử dụng các đơn vị nhị phân nội bộ).
Giá trị nhị phân thường gặp trong lập trình
Giá trị nhị phân sau đây thường xuất hiện trong lập trình, mạng và quản trị hệ thống:
| Nhị phân | Thập phân | Hexadecimal | Ngôn ngữ |
|---|---|---|---|
| 00000000 | 0 | 0x00 | Byte NULL, kênh màu đen |
| 00001010 | 10 | 0x0A | Ký tự dòng (LF) — dấu xuống dòng Unix |
| 00001101 | 13 | 0x0D | Dấu trở về đầu dòng (CR) — phần dấu xuống dòng Windows |
| 00100000 | 32 | 0x20 | Ký tự khoảng trắng (ASCII) |
| 01000001 | 65 | 0x41 | Phần tử 'A' (ASCII) |
| 01100001 | 97 | 0x61 | Phần tử 'a' (chỉ khác với 'A' ở vị trí bit 5) |
| 01111111 | 127 | 0x7F | Địa chỉ localhost (octet cuối); Ký tự xóa |
| 10000000 | 128 | 0x80 | Bắt đầu của ASCII mở rộng / dấu bit dấu hiệu |
| 11000000 | 192 | 0xC0 | Prefix mạng lớp C (192.x.x.x) |
| 11111111 | 255 | 0xFF | Địa chỉ phát sóng; byte tối đa; trắng trong RGB |
So sánh Chuổi 2, Hexadecimal và Octal
Người lập trình viên sử dụng các ngôn ngữ khác nhau tùy thuộc vào ngữ cảnh. Dưới đây là cách các giá trị này xuất hiện trong mỗi hệ thống:
| Thập phân | Nhị phân | Hexadecimal | Octal | Ngôn ngữ |
|---|---|---|---|---|
| 0 | 0000 | 0x0 | 0o0 | Zero / NULL |
| 7 | 0111 | 0x7 | 0o7 | Quyền Unix (rwx) |
| 10 | 1010 | 0xA | 0o12 | — |
| 15 | 1111 | 0xF | 0o17 | Max 4-bit (nibble) |
| 16 | 10000 | 0x10 | 0o20 | — |
| 127 | 1111111 | 0x7F | 0o177 | Max ký tự ký hiệu có dấu (8-bit) |
| 255 | 11111111 | 0xFF | 0o377 | Max ký tự không dấu (8-bit) |
| 511 | 111111111 | 0x1FF | 0o777 | Quyền Unix rwxrwxrwx |
| 1023 | 1111111111 | 0x3FF | 0o1777 | Max 10-bit (ADC) |
Hexadecimal là ngôn ngữ phổ biến nhất cho nhị phân vì mỗi chữ số hex tương ứng với chính xác 4 bit nhị phân — làm cho chuyển đổi trở nên dễ dàng. Octal tương ứng với 3 bit mỗi chữ số và chủ yếu được sử dụng cho quyền Unix (ví dụ: chmod 755 = 111 101 101 trong nhị phân = rwxr-xr-x).
Số nhị phân ký hiệu (Two's Complement)
Máy tính đại diện cho các số âm bằng hai's Complement — tiêu chuẩn được định nghĩa bởi IEEE và được sử dụng bởi hầu hết các bộ xử lý hiện đại. Trong một hệ thống hai's Complement 8-bit:
| Nhị phân | Decimal không dấu | Số (Two's Complement) |
|---|---|---|
| 00000000 | 0 | 0 |
| 00000001 | 1 | +1 |
| 01111111 | 127 | +127 (tối đa dương) |
| 10000000 | 128 | −128 (tối thiểu âm) |
| 10000001 | 129 | −127 |
| 11111110 | 254 | −2 |
| 11111111 | 255 | −1 |
Để đảo ngược một số trong hai's Complement: đảo ngược tất cả các bit và thêm 1. Ví dụ, +5 = 00000101 → đảo ngược → 11111010 → thêm 1 → 11111011 = −5.
Các phạm vi cho các loại số nguyên thông dụng:
| Loại | Bits | Phạm vi không dấu | Phạm vi có dấu |
|---|---|---|---|
| byte / uint8 | 8 | 0 đến 255 | −128 đến +127 |
| short / int16 | 16 | 0 đến 65,535 | −32,768 đến +32,767 |
| int / int32 | 32 | 0 đến 4,294,967,295 | −2,147,483,648 đến +2,147,483,647 |
| long / int64 | 64 | 0 đến 18.4 × 10¹⁸ | −9.2 × 10¹⁸ đến +9.2 × 10¹⁸ |
Số nhị phân trong Công nghệ hàng ngày
Số nhị phân là nền tảng của tất cả tính toán hiện đại vì transistor có hai trạng thái ổn định (mở/khóa, 1/0). Các ứng dụng chính:
- Kích thước tệp: 1 kilobyte = 2¹⁰ = 1,024 byte; 1 megabyte = 2²⁰ = 1,048,576 byte; 1 gigabyte = 2³⁰ byte
- Màu sắc: Màu RGB là ba giá trị 8-bit. #FF5733 trong hex = (255, 87, 51) trong thập phân = (11111111, 01010111, 00110011) trong nhị phân
- Mã hóa ASCII: Ký tự 'A' = thập phân 65 = nhị phân 01000001; 'a' = 97 = 01100001
- Unicode: hầu hết các ký tự văn bản đều có thể được chứa trong 16-bit nhị phân (phạm vi 0–65,535)
- Địa chỉ IP: Địa chỉ IPv4 là bốn nhóm 8-bit nhị phân: 192.168.1.1 = 11000000.10101000.00000001.00000001
Hiểu biết về số nhị phân trực tiếp giúp trong lập trình (các phép toán nhị phân, cờ), mạng (tính toán IP/subnet), và làm việc với phần cứng thấp cấp.
Phép tính nhị phân: Cộng và Trừ
Phép tính nhị phân tuân theo cùng các quy tắc như thập phân, nhưng chỉ có hai chữ số. Bảng cộng là:
| A | B | Tổng | Đi |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Ví dụ: 1011 + 0110
Hoạt động từ phải sang trái: 1+0=1, 1+1=10 (ghi 0 đi 1), 0+1+1=10 (ghi 0 đi 1), 1+0+1=10 (ghi 0 đi 1). Kết quả: 10001 (đесяt: 11+6=17 ✓)
Trừ trong phần cứng thường được thực hiện bằng cách thêm hai's Complement của số trừ. Để tính toán A−B, bộ xử lý tính A + (−B), nơi −B là hai's Complement của B. Điều này cho phép một mạch cộng đơn giản có thể xử lý cả cộng và trừ.
Phép toán nhị phân
Ngôn ngữ lập trình cung cấp các toán tử nhị phân để thao tác từng bit. Những điều này là cơ bản cho lập trình cấp thấp, hệ thống nhúng và tối ưu hóa hiệu suất:
| Phép toán | Biểu tượng | Ví dụ (8-bit) | Kết quả | Ứng dụng |
|---|---|---|---|---|
| AND | & | 10110101 & 11110000 | 10110000 | Đóng bit, trích xuất trường |
| OR | | | 10110101 | 00001111 | 10111111 | Đặt bit, kết hợp cờ |
| XOR | ^ | 10110101 ^ 11111111 | 01001010 | Đổi bit, mã hóa đơn giản |
| NOT | ~ | ~10110101 | 01001010 | Đảo bit |
| Left shift | << | 00000101 << 2 | 00010100 | Nhân đôi 2ⁿ |
| Right shift | >> | 00010100 >> 2 | 00000101 | Chia 2ⁿ |
Đổi bit là nhanh hơn nhiều so với nhân/chia trong nhiều bộ xử lý. x << 1 tương đương với x × 2, và x >> 1 tương đương với x ÷ 2 (chia lấy phần nguyên). Các trò chơi và firmware nhúng sử dụng các phép toán này rộng rãi để tối ưu hiệu suất.
Binary-Coded Decimal (BCD)
Binary-Coded Decimal đại diện cho mỗi chữ số thập phân bằng mô hình nhị phân riêng 4-bit. Không giống như nhị phân thuần, BCD giữ được cấu trúc thập phân:
| Đềm | Nhị phân thuần | BCD |
|---|---|---|
| 0 | 0000 | 0000 |
| 5 | 0101 | 0101 |
| 9 | 1001 | 1001 |
| 10 | 1010 | 0001 0000 |
| 42 | 101010 | 0100 0010 |
| 99 | 1100011 | 1001 1001 |
| 255 | 11111111 | 0010 0101 0101 |
BCD ít tiết kiệm không gian hơn nhị phân thuần (10 trong 16 kết hợp 4-bit có thể được sử dụng), nhưng nó đơn giản hóa hiển thị thập phân — mỗi nibble ánh xạ trực tiếp đến một chữ số hiển thị. BCD được sử dụng trong đồng hồ kỹ thuật số, máy tính bỏ túi, hệ thống tài chính (trong đó biểu diễn thập phân chính xác quan trọng), và các cơ sở dữ liệu mainframe cũ (COBOL, IBM EBCDIC).