30/09/2018, 17:08
Biểu diễn số nguyên có dấu ở các hệ đếm khác nhau như thế nào?
Như tít, ở hệ 10 thì biểu diễn số có dấu thông qua dấu ở phía trước, ví dụ: +7; -13…
Vậy trong hệ 8 và hệ 16 có biểu diễn dấu như trên không nhỉ?
-0714? -21C?
Mình chưa biết chỗ này mong các bạn thông não giúp phát
Bài liên quan
Hệ 10 ta dùng dấu
+
và-
. Nhưng các hệ khác ta đổi sang hệ nhị phân rồi tìm số âm của số đó, sau đó đổi ngược lại để được số âm.Ví dụ ta có số
0xC = 12
, vậy số âm của0xC
thể hiện như thế nào?Trước hết đổi
0xC
về nhị phân.Vậy số âm của
1100
là bao nhiêu, xem cách đổi bù hai bằng tiếng Anh hoặc tiếng Việt ta sẽ đổi được như sauCó được giá trị âm của
0xC
là11110100
, bây giờ ta đổi11110100
ngược lại hệ 16 ta sẽ đượcF4
.Vậy số âm của
0xC
là0xF4
.Ai có biết cách nào đơn giản hơn thì chia sẻ nhé
số có dấu thì 0xC có giá trị là -4, 12 thì trong hệ 16 có dấu phải là 0x0C, đổi sang nhị phân nếu bắt đầu là 1 thì đó là số âm
còn đổi sang số âm của một số n bit thì lấy 2^n trừ số đó
Ví dụ với 0x0C thì có thể lấy
E đang học môn chương trình dịch.
Vấn đề e gặp phải là: Xây dựng Automate hữu hạn đơn định đoán nhận số nguyên có dấu ở hệ Hexa của ngôn ngữ lập trình C/C++, Xây dựng văn phạm LL1 sản sinh ra số nguyên có dấu trong hệ Hexa của NNLT C/C++.
Nếu rắc rối như trên thì bài toán của e vẫn chưa thể giải được vì như vậy làm sao xây dựng văn phạm với otomat T_T
Nếu mà số của bạn biểu diễn bởi giới hạn số bit xác định (kiểu dữ liệu của máy) thì bạn biểu diễn như của anh @ltd và @ngockhiem Đã nói. Còn nếu không bị giới hạn (python chẳng hạn - số lớn ) thì bạn đơn giản dùng dấu “-” đằng trước là xong. Theo mình nghĩ thì bình thường sử dụng dấu “-” là dc rồi, khi nào cần thiết lắm, muốn biết kiểu “int 16 bit”, hay “long -32bit” … Biểu diễn trong bộ nhớ thế nào thì mới dùng như vậy