在C语言中,unsigned char
是一种数据类型,用于存储无符号字符,这意味着它可以存储的值范围是从 0 到 255(在8位的环境中)。与 char
类型不同,char
类型在大多数系统上是有符号的,可以存储的值范围是从 -128 到 127。
以下是 unsigned char
类型的一些特点:
unsigned char
通常占用 1 个字节的内存。- 它可以存储的值范围是 0 到 255。
- 由于是无符号的,所以
unsigned char
不能表示负数。 - 在表示二进制数时,
unsigned char
的所有位都用于表示数值,没有符号位。
如果我们讨论 -128 的二进制表示,并且将其存储在 unsigned char
类型的变量中,情况会有所不同。由于 unsigned char
是无符号的,它不会以补码形式存储负数。相反,它会将 -128 视为超出其范围的值,并将其转换为一个等效的正数值。
例如,如果我们尝试将 -128 存储在 unsigned char
变量中,实际上存储的将是:
128
-128的绝对值是128
128的二进制为1000 0000
取反为0111 1111
加1后为1000 0000
即-128用二进制表示的话就是1000 0000
而在unsigned char看来,1000 0000就是128嘛。