2011-02-10 44 views
12

Tôi có bộ xử lý điểm cố định 16 bit và tôi muốn xử lý điểm cố định với nó. Tôi đang tìm kiểu dữ liệu chính xác để sử dụng cho các ký tự int bit 16 bit ..Xử lý điểm cố định: sự khác nhau giữa uint16_t và uint_fast16_t là gì?

Câu hỏi của tôi là: sự khác nhau giữa một số uint16_tuint_fast16_t là gì? (Chúng được bao gồm trong số stdint.h.) Có phải uint_fast16_t tốt hơn vì nó nhanh hơn không ??

Cảm ơn !!

+1

http://en.wikipedia.org/wiki/Stdint.h#Integer_types – kennytm

Trả lời

12

uint16_t là số nguyên 16 bit chưa ký. uint_fast16_t là số nguyên không dấu có sẵn nhanh nhất với ít nhất 16 bit.

+6

Câu trả lời sẽ hữu ích hơn nếu bạn có thể xác định "nhanh nhất". –

+3

Đừng bận tâm: "Tiêu chuẩn không quy định bất cứ điều gì về các loại này ngoại trừ độ rộng của chúng phải lớn hơn hoặc bằng N. Nó cũng để nó cho người triển khai để quyết định loại số nguyên" nhanh ". –

+0

Thú vị ... nó đình công tôi kỳ quặc rằng kiểu dữ liệu này không có kích thước xác định .. nó là tùy thuộc vào người dùng .. o_o như vậy sẽ làm sizeof() để kết quả datatype này trong một lỗi? Trong mọi trường hợp, tôi không nghĩ rằng uint_fast16_t sẽ áp dụng cho tôi. Tôi sẽ chỉ dính vào uint16_t làm kiểu dữ liệu của tôi cho số học điểm cố định. :) Cảm ơn ... –

6

uint16_t có nhiều hạn chế hơn uint_fast16_tuint_least16_t. Không chỉ có hai phần sau có thể rộng hơn 16 bit, chúng cũng có thể có các bit đệm (các bit không tính đến giá trị như bit chẵn lẻ).

Sự khác biệt này thậm chí còn rõ rệt hơn đối với các loại đã ký. Ở đây, các loại chiều rộng chính xác phải sử dụng phần bổ sung của hai để biểu thị các giá trị âm.

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