请阅读以下对签名字符的说明,然后我们将讨论有符号/无符号整数。
首先,我想为您的问题准备背景。
................................................
char 数据类型有两种:
无符号字符;
签名字符;
(即积分数据类型)
.................................................. ..
根据不同的书籍解释为:
char 1byte –128 到 127(即默认有符号字符)
signed char 1byte –128 到 127
unsigned char 1byte 0 到 255
.................................................. ..
还有一件事 1byte=8 位。(零到第 7 位)
由于处理器标志寄存器保留第 7 位用于表示符号(即 1=+ve & 0=-ve)
-37 将表示为 1101 1011(最高有效位为 1),
+37 将表示为 0010 0101(最高有效位为 0)。
.................................................. ..
类似地,char 的最后一位默认被视为已签名
这就是为什么?
因为 char 还依赖于特定字符的 ASCII 码(例如 A=65)。
在任何情况下,我们都使用 char 并且仅使用 7 位。
在这种情况下,为了将 char/int 的内存范围增加 1 位,我们使用 unsigned char 或 unsigned int;
感谢您的提问。
类似地,对于 4bit int 或 2bit int,我们需要有符号整数和无符号整数