C语言里面,char类型是怎么存放-128的啊?9
发布网友
发布时间:2023-10-10 10:18
我来回答
共4个回答
热心网友
时间:2024-12-13 09:16
正数部分:
0:0000 0000
1:0000 0001
127:0111 1111
负数部分:
0:0000 0000
-1:1111 1111(总之-1加1溢出后是0)
-2:1111 1110(总之-2加1是-1)
-128:1000 0000
即-128加上127再加1溢出后是0——C/C++里存放整数的统一性。
热心网友
时间:2024-12-13 09:17
有符号的原码有正0和负0
而补码没有负0.因此10000000就是-128
热心网友
时间:2024-12-13 09:17
-128的补码恰恰就是1000 0000 ,又没人说原码和补码一定不能相等。
符号位不正好了吗?1000 0000的最高位为1,为负数。
另你有一个误解,补码其实是包含最高位的符号位。
热心网友
时间:2024-12-13 09:18
计算机中存储整型类数据采用的是补码,char也是一种整型类型,它存储的是字符的ascii值,有符号字符类型[signed] char的数据表示范围为-128 ~ 127,无符号字符类型unsigned char 的数据表示范围为:0-255。
计算机设计者在初期定义了有符号数和无符号数(原码),规定:数据的第一个bit表示符号,其余位表示数值。可是这样就出现了10000000 和 00000000这两个信息表示无法解释了,与实际中的数据不相符了(0只有一个)。
因此,提出了补码的概念:正数的补码与原码相同。 负数的补码=反码+1 , 反码:符号位不动,数值位按位取反。
这样
00000000就表示0
10000000就表示-128 你可以认为这就是个规定!