char能表示(-128~127)
2015-03-05 20:49
309 查看
char 的取值范围是 -128 ~127
注:数0的补码表示是唯一的:
+0的补码=+0的反码=+0的原码=00000000
-0的补码=11111111+1=00000000(mod 2的8次方)
由于-128的原码用8位无法表示,所以必须扩展到16位去表示,然后对16位的原码计算出16位的反码和补码,最后对16位的补码作低8位的截断,截断的低8位的值就是-128的补码了。
注意:由于char能表示的范围是:-128~127,如果将-129赋给char,编译的时候是会产生warning的,并会截断,截断后的值是0x7f(127)。
注:数0的补码表示是唯一的:
+0的补码=+0的反码=+0的原码=00000000
-0的补码=11111111+1=00000000(mod 2的8次方)
由于-128的原码用8位无法表示,所以必须扩展到16位去表示,然后对16位的原码计算出16位的反码和补码,最后对16位的补码作低8位的截断,截断的低8位的值就是-128的补码了。
// 8位所能表示的 原码 的范围-127到+127 // 8位所能表示的 反码 的范围-127到+127 // 8位所能表示的 补码 的范围-128到+127 // 计算机当中,是规定-128的补码是1000 0000 // 算的时候则需要扩展到16位来算。否则,第8位到底表示符号还是表示数值2的7次方呢?所以,8位就按8位的通常看法来看, -128 的补码是 1000 0000 int main(int argc, char* argv[]) { char ch = -129; // warning C4309: 'initializing' : truncation of constant value char ch2 = -128; // no warning return 0; }
注意:由于char能表示的范围是:-128~127,如果将-129赋给char,编译的时候是会产生warning的,并会截断,截断后的值是0x7f(127)。
相关文章推荐
- 解读为什么有符号的char可表示范围是-128~+127
- char能表示(-128~127)
- char能表示(-128~127)
- char能表示(-128~127)
- 浅析为什么char类型的范围是 —128~+127
- 带符号的char类型取值范围为什么是-128——127
- 为什么char能表示-128
- 浅析为什么char类型的范围是 —128~+127
- 深入理解c语言——char的范围为什么是-128到127而不是-127到127
- 浅析为什么char类型的范围是 —128~+127
- char的取值为什么是-128~127
- 浅析为什么char类型的范围是 —128~+127 .
- 八位二进制数为什么表示范围是:-128~~+127?
- 一个字节(8)位的表示范围为啥是-128-127
- 探究:java中的char的取值范围,为什么是-128到127?
- 为什么八位二进制表示范围为-128~127?
- 带符号的char类型取值范围为什么是-128——127
- 浅析为什么char类型的范围是 —128~+127
- 浅析为什么char类型的范围是 -128~127
- 浅析为什么char类型的范围是 —128~+127