Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Bù 2
01001011
Loại đầu vào decimal
Đầu vào ban đầu 181
Độ rộng bit 8 bit
Biểu diễn nhị phân 10110101
Bù 1 01001010
Bù 2 01001011
Thập phân ban đầu (không dấu) 181
Thập phân ban đầu (có dấu) -75
Thập phân bù 2 75
Thập lục phân ban đầu 0xB5
Thập lục phân có dấu 0xB5
Thập lục phân bù 2 0x4B

Máy tính bù 2 là gì?

Máy tính bù 2 (two's complement) giúp bạn chuyển đổi số giữa hệ thập phân, nhị phân và thập lục phân, đồng thời cho thấy máy tính biểu diễn các giá trị âm như thế nào. Bù 2 là phương pháp tiêu chuẩn mà gần như mọi vi xử lý hiện đại dùng để lưu số nguyên có dấu, vì vậy nắm vững nó là điều bắt buộc với lập trình viên, sinh viên điện tử và bất kỳ ai làm việc với logic số. Công cụ này cho phép bạn nhập số ở bất kỳ hệ cơ số nào, chọn độ rộng bit (8, 16 hoặc 32 bit) và xem ngay cách biểu diễn bù 2 cùng giá trị thập phân tương ứng.

Cách sử dụng máy tính

  • Nhập số vào ô nhập liệu — chấp nhận hệ thập phân, nhị phân hoặc thập lục phân.
  • Chọn hệ cơ số của số đầu vào nếu cần.
  • Chọn độ rộng bit: 8 bit, 16 bit hoặc 32 bit.
  • Xem kết quả: giá trị nhị phân, hex và thập phân có dấu sẽ hiện ra tự động.

Độ rộng bit rất quan trọng vì nó quyết định khoảng giá trị có thể lưu trữ. Ví dụ, số nguyên có dấu 8 bit chứa được các giá trị từ -128 đến 127, còn số 16 bit trải dài từ -32.768 đến 32.767.

Giải thích công thức

Để tìm bù 2 của một số nhị phân, bạn thực hiện hai bước:

  • Đảo tất cả các bit (đổi mỗi 0 thành 1 và mỗi 1 thành 0). Đây chính là bù 1.
  • Cộng thêm 1 vào kết quả vừa nhận được.

Công thức tổng quát:

$$\text{Twos Complement} = \left(\sim \text{Number}_{\,2}\right) + 1 \pmod{2^{\text{Bit Width}}}$$

Bit ngoài cùng bên trái đóng vai trò bit dấu: 0 nghĩa là dương, 1 nghĩa là âm. Để chuyển một số thập phân âm sang bù 2, áp dụng công thức \(2^{n} + \text{giá trị}\), trong đó \(n\) là độ rộng bit.

Quảng cáo
Sơ đồ hai bước: đảo bit rồi cộng một để có số bù hai
Số bù hai được tính bằng cách đảo từng bit rồi cộng thêm 1.

Ví dụ minh họa

Chuyển -5 sang bù 2 dạng 8 bit:

  • Bắt đầu với +5 ở dạng nhị phân: 0000 0101.
  • Đảo các bit: 1111 1010.
  • Cộng 1: 1111 1011.

Như vậy -5 được lưu thành 1111 1011, tương đương FB trong hệ thập lục phân. Kiểm tra lại: \(251 - 256 = -5\) (251 là giá trị không dấu).

Sơ đồ tròn cho thấy dải giá trị có dấu 8 bit quay vòng từ dương sang âm
Giá trị có dấu 8 bit quay vòng, ánh xạ nửa trên thành số âm.

Phạm vi số nguyên có dấu theo độ rộng bit

Phần bù hai là cách tiêu chuẩn mà máy tính biểu diễn các số nguyên có dấu. Với độ rộng bit \(n\) cho trước, một bit hoạt động như bit dấu, vì vậy phạm vi có dấu có thể biểu diễn là \(-2^{n-1}\) đến \(2^{n-1}-1\), trong khi cách diễn giải không dấu của các bit tương tự bao phủ \(0\) đến \(2^{n}-1\). Tất cả phép tính số học được cuốn modulo \(2^{n}\).

Độ rộng bit \(n\) Tối thiểu có dấu \(-2^{n-1}\) Tối đa có dấu \(2^{n-1}-1\) Tối đa không dấu \(2^{n}-1\) Modulus \(2^{n}\)
8 -128 127 255 256
16 -32,768 32,767 65,535 65,536
32 -2,147,483,648 2,147,483,647 4,294,967,295 4,294,967,296
64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807 18,446,744,073,709,551,615 18,446,744,073,709,551,616

Ví dụ: phần bù hai của số thập phân 5 ở dạng 8-bit là 251 khi được đọc dưới dạng byte không dấu, điều này biểu diễn \(-5\) như một giá trị có dấu.

Tham chiếu thập phân – nhị phân – Hex cho các giá trị 8-bit thông thường

Bảng sau ánh xạ các giá trị thập phân có dấu tiêu biểu với các dạng nhị phân phần bù hai 8-bit và hex của chúng. Các số âm có bit có ý nghĩa nhất được đặt thành 1. Để phủ định một giá trị, đảo ngược tất cả 8 bit và thêm 1.

Thập phân có dấu Nhị phân 8-bit Hex Giá trị không dấu
-128 1000 0000 0x80 128
-64 1100 0000 0xC0 192
-5 1111 1011 0xFB 251
-1 1111 1111 0xFF 255
0 0000 0000 0x00 0
1 0000 0001 0x01 1
5 0000 0101 0x05 5
64 0100 0000 0x40 64
127 0111 1111 0x7F 127

Để xác minh một dạng nhị phân một cách độc lập, bạn có thể chuyển đổi mẫu 8-bit 11111011 trở lại số thập phân, bằng 251 dưới dạng byte không dấu (được diễn giải thành \(-5\) có dấu).

Quảng cáo

Các thuật ngữ chính & Định nghĩa

Độ rộng bit
Số lượng chữ số nhị phân được sử dụng để lưu trữ một số nguyên (thường là 8, 16, 32 hoặc 64). Nó xác định modulus \(2^{n}\) và do đó phạm vi các giá trị có thể biểu diễn.
Bit dấu
Bit duy nhất cho biết liệu một số có dấu có âm (1) hay không âm (0). Trong phần bù hai, nó là bit có thứ tự cao nhất.
Bit có ý nghĩa nhất (MSB)
Bit bên trái, có giá trị cao nhất trong một số nhị phân. Trong giá trị phần bù hai có dấu, MSB cũng hoạt động như bit dấu.
Phần bù một
Phép đảo ngược từng bit của một số — mỗi 0 trở thành 1 và mỗi 1 trở thành 0 (\(\overline{B}\)). Nó là bước trung gian trước khi thêm 1 để tạo thành phần bù hai.
Phần bù hai
Mã hóa số nguyên có dấu chiếm ưu thế: phủ định một giá trị bằng cách đảo ngược tất cả các bit và thêm 1, tức là \(\overline{B}+1 \pmod{2^{n}}\). Nó cung cấp một biểu diễn duy nhất của không và cho phép phần cứng tương tự cộng các số có dấu và không dấu.
Tràn / cuốn lại
Điều xảy ra khi một kết quả vượt quá phạm vi có thể biểu diễn cho độ rộng bit; giá trị cuốn lại modulo \(2^{n}\). Ví dụ: cộng 1 vào giá trị tối đa 8-bit là 127 cuốn về -128.
Số nguyên có dấu vs không dấu
Một số nguyên có dấu có thể biểu diễn các số âm bằng cách sử dụng phần bù hai (phạm vi \(-2^{n-1}\) đến \(2^{n-1}-1\)); một số nguyên không dấu coi mỗi mẫu bit là không âm (phạm vi \(0\) đến \(2^{n}-1\)). Các bit giống hệt nhau — chỉ cách diễn giải khác nhau.

Câu hỏi thường gặp

Vì sao máy tính dùng bù 2? Vì nó cho phép phép cộng và phép trừ dùng chung một mạch điện, và chỉ có một cách biểu diễn duy nhất cho số 0, khác với phương pháp dấu-độ lớn hay bù 1.

Điều gì xảy ra nếu số quá lớn so với độ rộng bit? Giá trị sẽ tràn và quay vòng (overflow), cho ra kết quả ngoài ý muốn. Hãy chọn độ rộng bit lớn hơn để tránh tình trạng này.

Làm sao để chuyển ngược về số thập phân thông thường? Nếu bit dấu là 1, hãy lấy bù 2 một lần nữa rồi thêm dấu trừ; nếu bit dấu là 0, chỉ cần đọc nó như một số nhị phân bình thường.

Cập nhật lần cuối: