signed
在 C 语言中是什么意思?我有这个表格可以展示:
signed char
可以存储从 +128
到 +127
的数值。但是 128
也是一个正整数,那么为什么会变成 +128
到 +127
呢?或者说 128
和 +127
有不同的含义吗?这个问题出现在 Apress Beginning C 这本书中。signed
在 C 语言中是什么意思?我有这个表格可以展示:
signed char
可以存储从 +128
到 +127
的数值。但是 128
也是一个正整数,那么为什么会变成 +128
到 +127
呢?或者说 128
和 +127
有不同的含义吗?这个问题出现在 Apress Beginning C 这本书中。有符号整数可以表示负数;无符号整数不能。
如果有符号整数溢出,则行为未定义,而无符号整数则使用模数进行回绕。
请注意,该表格不正确。首先,它缺少了“-”符号(例如-128到+127)。其次,标准并不保证这些类型必须落在这些范围内。
positive 95: 01011111
negative 95: 10100000 + 1 = 10100001 [positive 161]
0: 01011111 + 10100001 = 100000000
^
|_______ as we're dealing with 8bit numbers,
the 8 bits which means results in 0
这个表格缺少负数。signed char 的范围是-128到+127;其他类型的范围也是如此。
有符号数是指在数字前面加上+或-的数字。例如,+2和-6都是有符号数。有符号数可以存储正数和负数,因此它们具有更大的范围,即-32768到32767。
无符号数是指没有符号的数字。它们总是正数,其范围为0到65535。
希望对您有所帮助。
-2^(31) to 2^(31)-1
i.e.,
-2,147,483,648 to 2,147,483,647
有符号通常意味着数字前面带有+或-符号。这意味着无符号整数、无符号短整型等不能为负数。
有符号整数可以有正值和负值。而无符号整数只能有正值。
对于使用二进制补码的有符号整数,这是最常用的,其范围为(取决于整数的位宽):
char s -> 范围 -128-127
其中无符号字符的范围为:
unsigned char s -> 范围 0-255
首先,您的表格有误……缺少负数。关于char类型……您可以用char表示所有256种可能性,因为char有一个字节,意味着2^8。所以现在您有两个选择来设置您的范围。要么从-128到+128,要么从0到255。第一个是带符号的char,第二个是无符号的char。如果您使用整数,请注意您正在使用什么操作系统。16位、32位还是64位。int(16位、32位、64位)。char始终只有8位值。
这意味着你的值前面可能会有一个符号(例如 +12345 或 -12345)
+
或 -
一样吗?通常打印正数时前面不会有 +
。 - General Grievance