胖头老师带来了一只会唱歌的鹦鹉,名字叫Binary,它只会唱数字0和1,如图4.1所示。
图4.1 鹦鹉唱歌
豆豆一句也听不明白:“老师,它在唱什么?”
“这只鹦鹉在模仿计算机存储字符的方式,它在唱英文单词‘cat'。”
“为什么是cat?”
“前面已经说过计算机数据都是以二进制的形式存储的。计算机存储英文字母的时候,并不是把英文字母本身存放到内存单元中。一个英文字母用8位二进制数表示。”
“那么英文字母是按什么规则用二进制数表示呢?”
“这种规则一般称为编码方式。其中一种编码方式叫做ASCII编码。ASCII编码使用了7位二进制数来表示128个字符,多余的最高位取0。鹦鹉就是用这种方式唱英文单词的。”“二进制太神奇了!”豆豆兴高采烈地说道。
例如,下面的代码,字符型变量c1存放字符“c”,在内存里存放的是整数99,用二进制表示是“01100011”。字符型变量c2存放字符“a”,在内存里存放的是整数97,用二进制表示是“01100001”。字符型变量c3存放字符“t”,在内存里存放的是整数116,用二进制表示是“01110100”。
这三个变量与二进制的对应关系如图4.2所示。
图4.2 变量c1、c2、c3与二进制的对应关系
“原来鹦鹉唱出来的那些数字跟英文单词cat是这样对应的。”豆豆终于明白了计算机是怎么存储字符类型的。
胖头老师说出一个有趣的知识点:“豆豆,字符还能和整数相加。既然字符是以二进制数的形式存到变量的,那么C++可以把字符当作整数来进行运算。”
这段代码把字符型变量c与数字32相加。变量c存放了“A”,当它加上32后就变成了“a”。因为“A”的十进制表示是65,“a”的十进制表示是97。
豆豆举一反三:“加上32可以把大写变小写,那么减去32可以把小写变大写。”
胖头老师赞扬豆豆:“说对了,真聪明!”
注意
定义字符型变量的时候,字符A要放在半角单引号内,而不是半角双引号内。
练习题
阅读程序写结果。