为什么char能表示
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/01 21:32:30
为什么char能表示
哎,.由于-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 // 是难以理解的.只能扩展后来看.// -128 原码 1000 0000 1000 0000 // -128 反码 1111 1111 0111 1111 // -128 补码 1111 1111 1000 0000 // -129 原码 1000 0000 1000 0001 // -129 反码 1111 1111 0111 1110 // -129 补码 1111 1111 0111 1111 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).