Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Two's Complement Binary (8-bit)
11111011
mẫu bit lưu trữ
Giá trị lưu không dấu 251
Diễn giải có dấu -5
Bù hai (phép lấy âm) 5

Máy Tính Bù Hai Là Gì?

Bù hai (two's complement) là cách chuẩn mà máy tính dùng để biểu diễn số nguyên có dấu trong một số bit cố định. Công cụ này nhận một số thập phân cùng độ rộng thanh ghi n bit, rồi cho bạn thấy giá trị đó được lưu dưới dạng mẫu bit bù hai như thế nào, mẫu bit đó tương ứng với giá trị không dấu nào, và được diễn giải thành số có dấu ra sao. Công cụ hoạt động với cả số dương lẫn số âm.

Cách Sử Dụng

Nhập giá trị thập phân bạn muốn mã hóa và số bit (thường là 8, 16, 32). Máy tính sẽ gói giá trị vào thanh ghi n bit bằng phép chia lấy dư (modulo), hiển thị dạng nhị phân và giải mã ra giá trị có dấu. Với số âm, công cụ tự động lưu dưới dạng bù hai tương ứng.

Giải Thích Công Thức

Để lưu giá trị x trong n bit, mẫu bit (không dấu) được tính bằng

$$\text{stored} = \left(\left(x \bmod 2^{n}\right) + 2^{n}\right) \bmod 2^{n}$$

Phần bù hai (phép lấy âm) của một giá trị đã lưu là

$$\text{twos} = \left(2^{n} - \text{stored}\right) \bmod 2^{n}$$

Để giải mã ý nghĩa có dấu của một mẫu n bit: nếu mẫu lớn hơn hoặc bằng \(2^{n-1}\) thì giá trị là \(\text{pattern} - 2^{n}\) (số âm), ngược lại chính là giá trị của mẫu đó.

Các ô nhị phân tám bit với bit ngoài cùng bên trái được đánh dấu là trọng số dấu âm
Trong số bù hai, bit quan trọng nhất mang trọng số âm, chia phạm vi thành các giá trị dương và âm.

Ví Dụ Cụ Thể

Mã hóa -5 trong 8 bit. Ở đây \(2^8 = 256\), nên

$$\text{stored} = \left(\left(-5 \bmod 256\right) + 256\right) \bmod 256 = 251$$

Đổi sang nhị phân: \(251 = 11111011\). Giải mã 251: vì \(251 \ge 2^7\) (128), giá trị có dấu là \(251 - 256 = -5\). Phần bù hai của 251 là \(\left(256 - 251\right) \bmod 256 = 5\), đúng bằng độ lớn của số.

Sơ đồ ba bước: bit gốc, bit đã đảo, rồi cộng một để lấy số đối
Để lấy số đối, đảo tất cả các bit rồi cộng thêm một.

Câu Hỏi Thường Gặp

Vì sao số âm lại hiện ra thành mẫu nhị phân toàn số lớn? Các bit đầu đều là 1; trong số học có dấu n bit, bit dẫn đầu bằng 1 đánh dấu một số âm, nên 11111011 là -5 chứ không phải 251.

n bit chứa được khoảng giá trị nào? Giá trị có dấu trải từ \(-2^{n-1}\) đến \(2^{n-1} - 1\). Với 8 bit, đó là từ -128 đến 127.

Nếu số của tôi quá lớn thì sao? Những giá trị vượt khỏi thanh ghi sẽ bị quấn vòng (tràn số) qua phép modulo, giống hệt như phần cứng thật.

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