类型大小与其值范围之间的关系? 在C++或其他语言中,类型的大小和它们所取的值之间的关系是什么? 例如,-char的大小为1字节,这意味着它可以存储的值数为2^8。那么为什么它只能取-128到127之间的值,而不能取更大的值呢。 它与位模式有关吗? 还是我误解了这件事。我是编程新手,我很快就掌握了这些概念,但是我被困在这个概念里了!! 请解释这与浮点类型的关系!!提前感谢

类型大小与其值范围之间的关系? 在C++或其他语言中,类型的大小和它们所取的值之间的关系是什么? 例如,-char的大小为1字节,这意味着它可以存储的值数为2^8。那么为什么它只能取-128到127之间的值,而不能取更大的值呢。 它与位模式有关吗? 还是我误解了这件事。我是编程新手,我很快就掌握了这些概念,但是我被困在这个概念里了!! 请解释这与浮点类型的关系!!提前感谢,c++,types,floating-point,byte,C++,Types,Floating Point,Byte,从州数的基本概念开始。位有两种状态-0和1。两个位有四种可能的状态:00、01、10和11。对于三位,状态数为八: 000 001 010 011 100 101 110 111 这种模式现在应该已经出现了:添加一个额外的位会使一组位可以接受的状态数翻倍。这很容易看出:如果k位的状态数为N,那么对于k+1位,当添加的位为0时,存在N状态,当其为1或N+N时,存在更多状态。因此,k位可以有2k个状态 字节是由8位组成的组,因此一个字节可能具有的状态数是2k,即256。如果使用字节表示无符号值,则

从州数的基本概念开始。位有两种状态-
0
1
。两个位有四种可能的状态:
00
01
10
11
。对于三位,状态数为八:

000 001 010 011 100 101 110 111
这种模式现在应该已经出现了:添加一个额外的位会使一组位可以接受的状态数翻倍。这很容易看出:如果
k
位的状态数为
N
,那么对于
k+1
位,当添加的位为
0
时,存在
N
状态,当其为
1
N+N
时,存在更多状态。因此,
k
位可以有2k个状态


字节是由8位组成的组,因此一个字节可能具有的状态数是2k,即256。如果使用字节表示无符号值,则其范围为0..255,包括0..255。对于有符号值,取一位表示符号。在该值范围内变为-128..127。负值允许一个额外的值,因为范围的非负值部分包括零,而范围的负值部分没有零。

其简单的数据类型变量具有
2^(sizeof(datatype)*字符位)
值。现在取决于此数据类型是
有符号的
还是
无符号的

signed
具有
0。。((2^(sizeof(数据类型)*字符位))-1)

unsigned
具有
-((2^(sizeof(数据类型)*字符位))/2)+((2^(sizeof(数据类型)*字符位)/2)-1)


字符数据类型

2^8
256

在哪里

-128..127
具有
256

对于
有符号字符
无符号字符
具有范围

0..255
,仍然是
256


字节是8位的序列

+---+---+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+---+---+---+
 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
最高位(以小位结尾)表示值是
0-正
还是
1-负
,其余位表示值

那你有

+---+---+---+---+---+---+---+---+
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |    < Max positive number
+---+---+---+---+---+---+---+---+
 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

-128到127是2^8个值<代码> 2 ^ 8<代码>为256,所以如果您认为它们是签名的,则一个字节可以存储值0至255,或-128至127。两个范围都包含256个不同的值。如果需要更大的值,可以使用更多的字节。还有其他语言吗?Python实际上有未绑定的整数类型,这能回答您的问题吗?请参阅和的解释
+---+---+---+---+---+---+---+---+
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |    < Max negative number
+---+---+---+---+---+---+---+---+
 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
1. Invert all bits -> |0|1|1|1|1|1|1|1| ->  127
2. Add 1           -> |1|0|0|0|0|0|0|0| ->  128
3. Change sign     ->                   -> -128