当前位置: 代码迷 >> VC >> char的负数有什么功用
  详细解决方案

char的负数有什么功用

热度:2688   发布时间:2013-02-25 00:00:00.0
char的负数有什么作用
#include   <iostream>

using   std::cout;

int   main()
{
char   number   =   -104;
number   > > =   2;
cout   < <   number;
return   0;
}

如果将char改为int则显示-26,事实上是想通过char来说明这个效果可为什么运行后命令行没有任何数字?
char作为1字节变量作用有两个:
1.存储给定值域内整数,值域为(-128,127)
2.存储单个ASCII代码
ASCII的范围是(0,127)
那char的负数仅仅是存储一个变量为负的整数么,还是有其他作用?如果仅是这样和int除了范围上不同还有什么区别?


------解决方案--------------------------------------------------------
老问题了。
内存里都是0,1.
-104,就是
0110 1000
因为是负数,所以要用补码表示,补码就是反码+1.
0110 1000 的反码就是
1001 0111 就是十进制的151,反码+1,就是152,内存里表示就是
1001 1000

因为char的有效范围一般是0~128。所以,显示的时候当作正数分析。就是
0x98,也就是 '&#732; '。右移2个位,
char是有符号的,不足的补1,就成了
1110 0110,就是0xE6,十进制就是230字符就是 "&aelig; "。不是可见字符。可见ASCII是0~128,超过128的是要2个字节组合起来显示的。一个显示不出来。

如果是int 就用32个位来作。


char number = -104;//number =
number > > = 2;
cout < < number;
  相关解决方案