4.signed/unsigned char

//2019/03/04
#include <iostream>

int main() {
    signed char a = 126;
    int b = 679881;
    //std::cout << std::hex;
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    system("pause");
    return 0;
}

signed char表示有符号字符,在-128~127之间;

unsigned char 表示无符号字符,在0~255之间;

由于与ANSII对应:

也长这样:

 

 

ANSII为0000 0000~0111 1111 共127个字符(unsigned char且<128)

绝大多数计算机的一个字节(byte)是8位(bit),取值范围是0~255,而ASCII码并没有规定编号为128~255的字符,为了能表示更多字符,各厂商制定了很多种ASCII码的扩展规范。注意,虽然通常把这些规范称为扩展ASCII码(Extended ASCII),但其实它们并不属于ASCII码标准。

例如以下这种扩展ASCII码由IBM制定,在字符终端下被广泛采用,其中包含了很多表格边线字符用来画界面。

 

 

我们要修改CMD窗口中的代码页。将其修改成437(OEM-美国),就可以正常显示显示SCII码中128-255的特殊字符。

一般情况我们CMD中的默认代码页是936(ANSI/OEM - 简体中文GBK,用于在CMD中显示中文的,这样就不能在CMD中显示SCII码中128-255的特殊字符。

用cmd命令“chcp”可以查看当前默认代码页:

1.临时更改代码页:

 使用 chcp 命令,例如 chcp 65001 ,这回将当前代码页变为 utf-8编码,不过这种方式在关闭 cmd 之后会自动失效。

 

 2.永久性更改代码页:

win+R,regedit,定位到:HKEY_CURRENT_USER\Console\

更改CodePage:437,即可。

 

当 unsigned char 为负数时:

//2019/03/04
#include <iostream>

int main() {
    unsigned char a = -85;
    unsigned char b = 256 - 85 ;
    //std::cout << std::hex;
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    system("pause");
    return 0;
}

 结果:

(需要把控制台的字体调到英文字体,具体:右键控制台上方,属性,字体)

 

posted @ 2019-03-04 16:56  虚设经年  阅读(600)  评论(0)    收藏  举报