为什么原始数据类型具有固定大小?

问题描述 投票:0回答:2

在某些编程语言中,通常是 CC++Java,整数数据类型是

int
short
long
int
数据类型通常是 32 位。
short
数据类型通常小于
int
数据类型,
long
数据类型通常大于
int
数据类型。

整数数据类型的第一个 bitbit 符号。 负数以“1”开头,非负数以“0”开头。

因此,32 位数据类型通常 存储在

-(2^31)
(2^31 - 1)
范围内的数字。

为什么我们不能拥有无限大小的数据类型,以便我们可以存储无限范围的数字?

long-integer
2个回答
3
投票

作为低级编程语言,C 和 C++ 的设计紧密遵循通用硬件的功能。原始构建块(基本类型)对应于常见 CPU 本身支持的实体。 CPU 通常可以非常高效地处理字节和字; C 将它们称为

char
int
。 (更准确地说,C 定义
int
的方式是编译器可以使用目标 CPU 的字大小。)CPU 也支持双倍大小的字,这在历史上对应于 中的
long
数据类型。 C,后来是 C 和 C++ 的
long long
类型。半字对应于
short
。基本整数类型对应于 CPU 可以很好处理的事物,具有足够的灵活性来适应不同的体系结构。 (例如,如果 CPU 不支持半字,则
short
的大小可能与
int
相同。)

如果硬件支持无限大小的整数(仅受可用内存限制),那么可能会存在将其添加为 C(和 C++)中的基本类型的争论。在此之前,C 和 C++ 中对大整数(请参阅)的支持已归入库。

一些较新的高级语言确实内置了对任意精度算术的支持。


3
投票

简单答案:性能

对于 C、C++ 和 Java 三种语言来说,都存在用于大整数的库。但使用这些库的性能通常比常规数据类型差得多。无论是 CPU 时间还是内存使用率。

整数数据类型的第一位是位符号。负数以“1”开头,非负数以“0”开头。

不一定。例如,一补数就不是这样工作的。而其他一些表示负数的方法则不然。即使负数的两个补码确实以 1 开头,它也不是真正的符号位。

https://en.wikipedia.org/wiki/Signed_number_representations

© www.soinside.com 2019 - 2024. All rights reserved.