DEC2BIN, BIN2DEC: chuyển đổi nhị phân, và cách Excel biểu diễn số âm bằng bù hai
Chia sẻ
"DEC2BIN và BIN2DEC chuyển đổi giữa số thập phân và nhị phân, khác BASE/DECIMAL ở đúng một điểm quan trọng: hỗ trợ số âm bằng cách biểu diễn bù hai 10-bit, thay vì báo lỗi như BASE."
Bài BASE, DECIMAL đã chuyển đổi số sang bất kỳ hệ đếm nào từ 2 đến 36, nhưng chỉ nhận số nguyên không âm. DEC2BIN và BIN2DEC là cặp hàm chuyên biệt hơn — chỉ làm việc với hệ nhị phân — nhưng bù lại có một khả năng BASE không có: xử lý được số âm.
Công thức trong bài dùng dấu phẩy (,); đổi sang dấu chấm phẩy (;) nếu Excel của bạn cấu hình theo vùng miền khác.
Cú pháp
=DEC2BIN(so, [do_dai])
=BIN2DEC(so_nhi_phan)
DEC2BIN(9) cho "1001". BIN2DEC("1001") cho lại 9 — hai hàm ngược nhau, giống cặp BASE/DECIMAL nhưng chuyên cho nhị phân.
Khả năng BASE không có: biểu diễn số âm bằng bù hai
=DEC2BIN(-9)
Kết quả là "1111110111" — không phải lỗi. Excel biểu diễn số âm theo quy tắc bù hai (two's complement) trên đúng 10 bit: bit đầu tiên là 1 báo hiệu số âm, phần còn lại là giá trị đã được "cuộn" theo modulo 2^10 = 1024. Đây chính là cách máy tính thật sự lưu số âm trong bộ nhớ — khác hẳn BASE(-9,2) sẽ báo lỗi #NUM! ngay lập tức vì BASE không có khái niệm số âm.
Giới hạn: chỉ từ -512 đến 511
=DEC2BIN(600)
Vì biểu diễn bù hai dùng đúng 10 bit, phạm vi số hợp lệ chỉ từ -512 đến 511 — vượt quá khoảng này (dù là số dương như 600) sẽ báo lỗi #NUM!, khác hẳn BASE không giới hạn phạm vi số dương.
Đệm số 0 chỉ áp dụng cho số không âm
=DEC2BIN(9,8)
=DEC2BIN(-9,8)
DEC2BIN(9,8) cho "00001001" — đệm đủ 8 ký tự theo tham số do_dai. Nhưng DEC2BIN(-9,8) vẫn cho "1111110111" (đủ 10 ký tự) — tham số do_dai bị bỏ qua với số âm, vì biểu diễn bù hai luôn cần đúng 10 bit để giữ đúng dấu, không thể rút ngắn hơn.
BIN2DEC tự nhận diện dấu qua bit đầu tiên
=BIN2DEC("1111110111")
Kết quả là -9 — BIN2DEC tự động nhận ra đây là số âm vì chuỗi có đúng 10 ký tự và bắt đầu bằng 1, rồi giải mã ngược lại theo đúng quy tắc bù hai đã dùng ở DEC2BIN.
Tổng kết
DEC2BIN và BIN2DEC chuyển đổi giữa thập phân và nhị phân, khác BASE/DECIMAL ở khả năng biểu diễn số âm bằng bù hai 10-bit — đúng cách máy tính thật lưu trữ số âm trong bộ nhớ. Phạm vi hợp lệ chỉ từ -512 đến 511, và tham số đệm số 0 không có tác dụng với số âm.
Đọc tiếp trong cùng cụm bài: DEC2HEX, HEX2DEC — cùng nguyên lý bù hai nhưng cho hệ thập lục phân, phạm vi rộng hơn nhiều.
Mục lục
Muốn làm chủ Excel?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
DELTA, GESTEP: hai hàm so sánh trả về đúng 0 hoặc 1, tiện làm cờ hiệu trong công thức
DELTA kiểm tra hai số có bằng nhau hay không, GESTEP kiểm tra một số có đạt ngưỡng hay không — cả hai đều trả về đúng 0 hoặc 1 thay vì TRUE/FALSE, tiện dùng làm cờ hiệu số học nhân trực tiếp vào công thức khác.
BIN2HEX, HEX2BIN: chuyển đổi trực tiếp giữa hai hệ đếm, không cần qua bước trung gian thập phân
BIN2HEX và HEX2BIN chuyển thẳng giữa nhị phân và thập lục phân trong một bước, không cần công thức lồng qua DEC2BIN/DEC2HEX trung gian. Excel còn có đủ 6 cặp hàm chuyển đổi trực tiếp tương tự giữa ba hệ đếm nhị-bát-thập lục phân.
DEC2OCT, OCT2DEC: hệ bát phân, và ý nghĩa thật của quyền file Unix dạng 755
DEC2OCT và OCT2DEC chuyển đổi giữa thập phân và bát phân — hệ đếm ít gặp trong đời sống hàng ngày nhưng vẫn còn dùng để biểu diễn quyền truy cập file kiểu Unix, như con số 755 quen thuộc khi chạy lệnh chmod.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.