Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任何数据类型的大小和范围是基于什么决定的?_C#_Java_C++_C - Fatal编程技术网

C# 任何数据类型的大小和范围是基于什么决定的?

C# 任何数据类型的大小和范围是基于什么决定的?,c#,java,c++,c,C#,Java,C++,C,我想知道,决定任何数据类型大小的基础是什么。例如,java中intger数据类型的大小为4字节。那么,为什么它正好是4,而不是其他任何东西。可以使用int-type存储的最大数量是2147483648。这个号码是什么时候来的?我的意思是,对于任何其他数据类型,得到这个数字的公式是什么 但为什么正好是4?我还是不清楚。有人说,它可以表示特定数据类型范围内的任何数字。但也有其他数据类型提供了更大的范围。仍然很困惑…4字节=4*8位=32位。现在2^32=4294967296。除以2,得到214748

我想知道,决定任何数据类型大小的基础是什么。例如,java中intger数据类型的大小为4字节。那么,为什么它正好是4,而不是其他任何东西。可以使用int-type存储的最大数量是2147483648。这个号码是什么时候来的?我的意思是,对于任何其他数据类型,得到这个数字的公式是什么


但为什么正好是4?我还是不清楚。有人说,它可以表示特定数据类型范围内的任何数字。但也有其他数据类型提供了更大的范围。仍然很困惑…

4字节=4*8位=32位。现在2^32=4294967296。除以2,得到2147483648。所以int的范围是从-2147483648到+2147483648。

因为4字节是4*8=32位。 2^32 = 4294967296 对于unsigned int,它是最大值,对于signed int,它是2^32/2,这是您的数字。
表示数据类型的字节数由体系结构决定。对于C++,只有sieof(char)保证为1。

< p>我不知道从哪里得到的号码,这是错误的。此类类型的最大数量总是奇数而不是偶数

对于
无符号
类型C规定它总是使用位表示,比如x位。最大值总是x减1的2次方,因此是奇数


对于有符号的
类型,最大值(因此为正值)的规则类似。对于最小值,事情有点复杂,但通常这使用所谓的二次补码表示负数,而最小值通常是(最大值的负数)减去一,所以是偶数。

在弗拉基米尔的一个小变体中:

Int是一种有符号的数据类型,正如Vladimir所说:

4 bytes = 4*8 bits = 32 bits. 
但实际上,
2^32=4294967296


因为这是有符号的,所以将该值减半,因此max=
4294967296/2=2147483648

这一切都由硬件决定。设计这些语言时,32位平台非常流行。这意味着使用32位数字操作是最有效的,指针是32位的。最常见的平台有8位字节,因此32位是4位字节。最常见的有符号整数表示是,因此最大的可表示数字是231-1或2147483648,最小的是-231或2147483647。无符号整数的范围为0到232-1或4294967295

C++实际上并不要求整数具有这些大小。它是为了在更广泛的平台上编写高效的代码,因此它说:

有四种带符号整数类型:“带符号字符”、“短整型”、“整型”和“长整型”。在此列表中,每种类型提供的存储空间至少与列表中前面的类型相同。普通INTS具有执行环境架构建议的自然大小;提供其他有符号整数类型是为了满足特殊需要


首先,计算机只能理解(0和1)。
8个二进制数字(位)组合在一起将形成最小可寻址存储单元(字节)

因为字节只能代表256种不同的状态,远远低于我们的要求。另一些是通过使用多个字节来表示单个值来定义的,例如
int
来表示整数


可以在上面的链接中找到每个单元的解释方式。

出于效率原因,基本数据类型往往基于硬件体系结构提供的数据类型。即使是Java和C#等独立于平台的语言,在设计时也考虑到了通用的32位处理器。正如其他人所解释的,积分类型的最小值和最大值取决于每种类型中可用的位数所能表示的最低值和最高值,保留一位来表示有符号类型的符号。

在汇编程序中,类型的位大小由必须使用数字的体系结构定义。大多数当前的体系结构以8位字节为单位对位进行分组,并在转到下一种类型时将数字的大小增加一倍:8、16、32、64、128。。。但并非所有的体系结构都支持所有类型,一些旧的体系结构具有奇怪的类型(例如,14位整数)

当您使用编程语言时,该语言抽象较低级别,并且定义该语言中的类型以抽象较低级别的类型。根据语言的不同,类型可能有所不同:
char
short int
int
一些建议。在某些情况下,它将被精确定义(在Java或C中,
int
正好是32位,而
long
是64位),而在其他情况下,如C/C++只定义类型之间的关系(
long
不小于
int
,后者又不小于
short
,然后
char

给定无符号类型可以容纳的最大数可以计算为
2^N-1
,因此对于32位无符号整数,最大值为
4294967295
。之所以使用
-1
部分,是因为存在
2^N
不同的数字,其中一个是
0
,因此非零值只剩下
2^N-1

当谈到有符号整数类型时,体系结构同样有很多要说的。大多数当前的体系结构使用。在这些平台中,
N
位有符号整数的最大有符号值为
2^(N-1)-1
,最大负数为
-2^(N-1)
。一些较旧的体系结构为符号保留一位,然后存储实际数字,在这种情况下,负范围将减少一(这种方法允许两个零值:
0
-0

至于你的问题,你必须先选择语言。然后,在C或C++的情况下,你必须选择你的平台,甚至编译器。而在大多数情况下,这些类型是直接相关的