UTILS.
100% trong trình duyệt
🔢

Công cụ chuyển đổi bù hai

Chuyển số nguyên có dấu sang/từ nhị phân và hex bù hai ở độ rộng 4, 8, 16, 32 hoặc 64 bit, kèm bù một và diễn giải không dấu.

Nhập một số hoặc mẫu bit ở trên.

Về công cụ này

Công cụ chuyển đổi bù hai mã hóa một số nguyên có dấu thành biểu diễn nhị phân và thập lục phân bù hai ở độ rộng bit bạn chọn (4, 8, 16, 32 hoặc 64 bit), và giải mã một mẫu nhị phân hoặc hex trở lại giá trị có dấu mà nó biểu diễn. Nó dùng BigInt xuyên suốt, nên các giá trị 64-bit được xử lý chính xác không mất độ chính xác.

Với độ rộng N bit, dải có dấu là −2^(N−1) đến 2^(N−1)−1. Để mã hóa một số thập phân d: nếu d không âm thì mẫu đơn giản là d; nếu d âm thì mẫu là 2^N + d (tương đương, đảo tất cả bit của |d| và cộng 1). Công cụ xuất ra nhị phân N-bit đệm số không, hex N/4-chữ-số, bù một (NOT theo bit), và diễn giải không dấu của cùng các bit, và nó đánh dấu lỗi tràn khi một giá trị không vừa với độ rộng đã chọn.

Để giải mã, dán một mẫu nhị phân hoặc hex và công cụ đọc bit cao nhất của nó: nếu bit có trọng số lớn nhất được đặt thì giá trị là mẫu − 2^N (âm), nếu không thì là chính mẫu đó. Nó luôn hiển thị cả cách đọc có dấu và không dấu cạnh nhau, đó chính xác là sự nhập nhằng mà bù hai giải quyết ở cấp phần cứng. Mọi tính toán là cục bộ với trình duyệt của bạn.

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

Dải cho mỗi độ rộng bit là gì?
Một độ rộng N bit biểu diễn các giá trị có dấu từ −2^(N−1) đến 2^(N−1)−1. Nên 8-bit trải từ −128 đến 127, 16-bit từ −32768 đến 32767, và 32-bit khoảng ±2.1 tỷ. Các giá trị ngoài dải kích hoạt cảnh báo tràn.
Một số âm được mã hóa như thế nào?
Lấy độ lớn, đảo mọi bit (bù một), và cộng 1. Tương đương, mẫu bằng 2^N cộng số âm đó. Ví dụ −1 trong 8 bit là 11111111, và −42 là 11010110.
Vì sao cũng hiển thị giá trị không dấu?
Cùng một mẫu bit có hai cách đọc: có dấu (bù hai) và không dấu. Hiển thị cả hai làm rõ rằng, chẳng hạn, mẫu 8-bit 11111111 là −1 có dấu nhưng 255 không dấu — cách diễn giải phụ thuộc vào cách phần cứng xử lý nó.
Nó có xử lý được các giá trị 64-bit chính xác không?
Có. Công cụ dùng số học BigInt độ chính xác tùy ý, nên các mẫu 64-bit và giá trị có dấu của chúng được tính chính xác không có việc làm tròn mà số JavaScript thông thường sẽ đưa vào ngoài 2^53.

Công cụ khác