Sự khác nhau giữa unsigned short
và unsigned int
là gì? Tôi thấy rằng unsigned short
là 0-65,535
và unsigned int
là 0-65,535
hoặc 0-4,294,967,295
. Tôi không hiểu sự khác biệt rất tốt. Làm thế nào tôi có thể biết được kích thước của kiểu dữ liệu trong kiến trúc của tôi? Và nếu ví dụ: c = (unsigned short) d;
khi c
là unsigned short
và d là unsigned int
; no co nghia la gi? 16 bit đầu tiên từ d
được gán cho c
?unsigned ngắn vs unsigned int - đôi khi họ là cùng một phạm vi?
Trả lời
Bạn thực sự hỏi sự khác biệt giữa short
và int
là gì. Câu trả lời là short
có thể hẹp hơn, nhưng cũng có thể có cùng chiều rộng như, int
. Đó là hầu như tất cả chúng ta biết chắc chắn, độc lập với nền tảng. Rất nhiều nền tảng có int
và 16 bit short
32 bit, nhưng không phải tất cả.
Cảm ơn bạn. Bạn có thể kiểm tra phần chỉnh sửa thứ hai của tôi không? :) – mpluse
Không, tôi sẽ không, vui lòng chỉ hỏi một câu hỏi khác thay vì thêm nhiều bit hơn vào một câu hỏi đã được trả lời. Nếu bạn tìm kiếm các câu hỏi mới, có thể bạn sẽ thấy họ đã có câu hỏi với câu trả lời ở đây. –
OK. Cảm ơn bạn, anyway. – mpluse
Đây là một liên kết hữu ích để giải thích lịch sử của các kiểu dữ liệu C:
http://en.wikipedia.org/wiki/C_data_types
Vì vậy, kích thước của kiểu dữ liệu của bạn là nền tảng phụ thuộc, nhưng nếu int của bạn là 32-bit chiều dài sau đó nó sẽ có thể đại diện cho một trong 2^32 số khác nhau (0 - 4,294,967,295 nếu chưa ký). Tương tự, nếu ngắn của bạn dài 16 bit thì nó có thể đại diện cho một trong 2^16 số khác nhau (0 - 65,535 nếu không dấu).
Liên kết này cung cấp cho bạn các chi tiết thực hiện cho Visual Studio 2005, nơi ints là 32-bit có kích thước (4 byte) và quần short là 16-bit (2 byte):
http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.80).aspx
chính xác của bạn thực hiện sẽ phụ thuộc vào trình biên dịch của bạn.
Đối với phần cuối của câu hỏi, có nếu bạn cố gắng bỏ một giá trị lớn hơn giá trị cực đại ngắn xuống thì bạn sẽ kết thúc bằng một giá trị khác (có thể là 16 bit đầu tiên nhưng bạn nên kiểm tra để chắc chắn).
Trước tiên, bạn phải hiểu nội dung chưa được ký và viết tắt là gì.
Mọi thứ được chia thành các bit.
Một ngắn gọn là 16 bit, mỗi bit là 1 hoặc 0. Để đơn giản tôi sẽ chứng minh với 4 bit
1000 - Unsigned = 8
1000 - Signed = -8
1111 - Unsigned = 15 which is equal to 2^(# of bits) -1
1111 - Signed = -1
Chú ý rằng với một số unsigned, phạm vi các số lớn hơn, chúng ta có thể làm 1111 = 15.
Nhưng với một số ký, khả năng tối đa là 0111 = 7.
Bây giờ một đoạn ngắn có 16 bit, cho nó
signed range of −32,768 to 32,767 [−(2^15) to 2^15 − 1]
Unsigned range: 0 to 65,53 = 2^16 -1
Một Int có 32 bit, đưa ra một loạt các
Signed:−2,147,483,648 to 2,147,483,647 = −(2^31) to 2^31 − 1
Unsigned: 0 to 4,294,967,295 = 2^16 -1
Cảm ơn bạn. Tôi biết rằng, chỉ là một sự mơ hồ bởi vì họ có cùng một phạm vi giá trị. – mpluse
@Lafore Ah. Khi bạn thực hiện một đoạn ngắn, nó không đảm bảo 16 bit, trong khi một 16bit Int nào. Vì vậy, nó cho những trường hợp khi bạn hoàn toàn cần một số nguyên 16 bit. Kinda lẻ. – BrettD
Vô cùng sai ... một 'char' ít nhất là 8 bit, một' ngắn' hoặc một 'int' 16, một bit dài 32 bit. Và trên CRAY chúng là _all_ 32 bit. – vonbrand
Chúng ta không thể nói một tên kiểu dữ liệu (short, int, long, etc. kép) có chiều dài chỉ chút cụ thể trên tất cả các kiến trúc vi xử lý hoặc ngôn ngữ lập trình.Nó chủ yếu phụ thuộc vào kiến trúc của bộ vi xử lý và tất nhiên là các định nghĩa của ngôn ngữ lập trình. Nói chung, ký/unsigned ngắn nên có (tôi mong chờ) một nửa bit-kích thước của ký/unsigned int.
- 1. Là loại unsigned ngắn + int thực hiện được xác định?
- 2. Unsigned Long Long nằm ngoài phạm vi?
- 3. mysql Tinyint là unsigned
- 4. C - unsigned int để unsigned char mảng chuyển đổi
- 5. Hãy so sánh int và unsigned int
- 6. Tại sao kết quả của unsigned char << unsigned char không phải là unsigned char
- 7. Là một int giống như unsigned hoặc ký?
- 8. Mẫu <unsigned int N> có nghĩa là gì?
- 9. Objective C: Unsigned int so sánh
- 10. int xúc tiến để int unsigned trong C và C#
- 11. Chuyển đổi từ 2 hoặc 4 byte thành chữ ký/unsigned ngắn/int
- 12. Java unsigned byte [2] để int?
- 13. JNI: chuyển đổi unsigned int thành jint
- 14. Thêm hai biến unsigned char và kết quả là int
- 15. sql server 4 byte unsigned int
- 16. cách chuyển đổi ascii thành unsigned int
- 17. 4 byte unsigned int trong SQL Server?
- 18. Sự khác biệt thực sự giữa "int" và "unsigned int"
- 19. Là 'dài unsigned' là hợp lệ như 'unsigned long' trong C?
- 20. C dưới dạng viết tắt của unsigned long int
- 21. lỗi: không có chức năng phù hợp cho cuộc gọi đến ‘min (dài unsigned int &, unsigned int &)’
- 22. 32 bit hoạt động unsigned Bitwise JavaScript là một trong ngắn
- 23. Unsigned và ký so
- 24. Enum Class "không thể chuyển đổi sang unsigned int"
- 25. Mat để unsigned char *
- 26. Chuyển đổi chuỗi int unsigned trả về kết quả sai
- 27. stddef.h: lỗi: duplicate 'unsigned'
- 28. typecasting để unsigned trong C
- 29. Unsigned double in C++?
- 30. char! = (Ký char), char! = (Unsigned char)
Tại sao có ba ngôn ngữ được đề cập? – Lion
Âm thanh như C, loại bỏ các thẻ ngôn ngữ không liên quan. – djechlin
Nó không phải là chung cho 3 ngôn ngữ? – mpluse