为什么char能表示-128
来源:互联网 发布:java时间格式化到毫秒 编辑:程序博客网 时间:2024/04/30 22:01
以前一直不太理解为什么8位的char能表示-128,于是到网上去百度,原来就是这么规定的。哎,。。。
由于-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 1111int 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
- 为什么char能表示-128
- char能表示(-128~127)
- char能表示(-128~127)
- 计算机中char型数为什么表示的是-128————127
- 解读为什么有符号的char可表示范围是-128~+127
- 8位二进制数能表示的最小整数为什么是-128,10000000为什么是-128的补码。
- 为什么C++中字节用 unsigned char 来表示
- 协方差为什么能表示两个随机变量的相关性?
- java中一个char类型字符能表示世界上所有语言的所有字符吗?
- 补码10000000为什么可以表示-128?
- 为什么-128用二进制表示为1000000000000000?
- char表示数值范围
- char表示的范围
- 用CHAR表示数值
- 为什么char类型最小值为-128?
- c语言中计算int,float,double,char四种数据类型所能表示的数据范围
- C/C++语言中计算int,float,double,char四种数据类型所能表示的数据范围
- 数组二分法查找数据
- A Unix Utility You Should Know About: Pipe Viewer
- 破解EXCEL工作表
- 5分制及5级评论之间的转换
- AndroidManifest.xml配置文件详解 .
- 为什么char能表示-128
- license类型与server配置不匹配导致SybaseASE无法启动
- Box2D v2.1.0用户手册翻译 - 第06章 夹具(Fixtures)
- 简单asp.net上传文件代码,留个标识方便查翻
- 分批处理大数据 -- 时间换取空间策略
- android 悬浮窗口
- 彩色转灰度算法 RGB to Grey
- RedHat - as5 使用yum
- 马尔可夫决策过程