2012-06-01 54 views
6

Tôi hiểu rằng 1 byte sẽ giữ một số từ 0-255. Và đó là một số 16-bit là từ 0-65535.cách chuyển đổi hai byte thành một số 16 bit?

Nếu tôi đang cố gắng trình bày số 16 bit bằng cách sử dụng hai thanh ghi 8 bit riêng biệt ... làm cách nào để thực hiện điều đó? Toán học hoạt động như thế nào?

Cảm ơn!

+1

Kiến trúc và công cụ lắp ráp nào? –

+1

Không có gì để chuyển đổi. Chỉ cần bắt đầu xử lý cặp thanh ghi như một cặp đại diện cho một số 16bit. Cách hoạt động của toán phụ thuộc vào hướng dẫn bạn có sẵn trên nền tảng của mình. – harold

+0

Không có đầu mối. Tôi đang làm việc với một lập trình viên hệ thống nhúng. Anh ta nói anh ta bị giới hạn. Anh ấy có thể gửi cho tôi một byte hex. Và sau đó một byte hex khác. Và tôi sẽ có thể biến chúng thành một số 16 bit. Nhưng tôi không chắc chắn làm thế nào. –

Trả lời

10

Các toán các công trình hiện như sau:

sixteenBitNumber = 256*upperByte + lowerByte; 

với sự thay đổi và hoạt động Bitwise:

sixteenBitNumber = (upperByte<<8) | lowerByte; 

Trong hầu hết các CPU, thậm chí một số người 8-bit cổ xưa, cách giải thích này được thực hiện trong phần cứng: bạn tải byte vào các phần của thanh ghi 16 bit hoặc vào các thanh ghi 8 bit riêng biệt có thể hoạt động như một cặp 16 bit và phần cứng hoạt động với dữ liệu như thể nó là một số 16 bit đơn.

1

Bằng số thập phân, làm cách nào để lấy 7 và 9 và tạo 79? (7 * 10) +9 Hoặc 12 và 34 và tạo 1234? (12 * 100) +34. Không có 0x12 và 0x34 khác và tạo 0x1234. (0x12 * 0x100) + 0x34. Sạch hơn nhiều để thay đổi bit (0x12 < < 8) + 0x34. bạn có thể hoặc nó là tốt (0x12 < < 8) | 0x34.

0

Bạn muốn làm việc cùng nhau? Thật dễ dàng

Giả sử bạn có số 2643 - trong cơ sở 10. nếu bạn chia nó thành hai nửa, bạn sẽ có thứ gì đó như 26 và 43, phải không? bạn biết rằng nếu bạn nhân đôi, bạn phải nhân từ phải sang trái và mang theo. Vì vậy, làm điều đó - nhân bên phải, và nếu có tràn, thêm rằng ở phía bên trái và sau đó nhân bên trái.

Ví dụ:

(37 82) *2  ->  ((37*2) + overflow) + 64  ->  (74 + 1) 64  ->  75 64 

Xem cách mà làm việc? Cùng đi cho phân chia - cần phải thực hiện? Ăn cắp từ bit cao hơn. Bạn muốn thêm hoặc trừ số? Không quá khó sau khi tất cả!

Số nhị phân hoạt động theo cùng một cách.

(01110110 10110011) * 10 = (0)  <-  1110110(1)  <-  01100110 

Về cơ bản bạn tính toán kết thúc thấp hơn, sau đó tính toán phần trên, sau đó bạn áp dụng tràn.

Các vấn đề liên quan