在学习C++之前,我们先来搞清楚计算机的单位。
先说一下本章的学习要点
1, 1bit里可以存储0或者1
2, 1byte是8个bit的组合
3, 计算机语言(C和C++)的最小变量单位是Byte
4, 变量都是由bit组成,都是有存储范围的
---------------------------------------------------------------------------------------------------------------------------------------
相信大家都知道计算机内部是2进制的世界,它的最小单位是【位】,英文:bit
1bit里可以存储0或者1。但是这是为啥呢?
我是好奇宝宝,碰到什么不懂的地方都要问为啥,在追求为啥的过程中感受快乐。
通过各种书籍的阅读和度娘的帮助,我终于明白了真相。
计算机启用2进制并不是因为电子计算机使用晶体管的高低电平来存储数据。
而是因为我们的道家老祖【老子】领悟了这个混沌世界的真相。
【道生一,一生二,二生三,三生万物】
这句话翻译白话文就是:有1个道(bit),就可以存两个值(0或1),能存两个就可以发展成三个(11),甚至无限大(11111111111111111111111)。
我们的祖先领先了这个世界太久,只是我们没有去发扬光大,接下来就靠我们努力啦。正能量UP。
而在C++语言中,并不能直接操作bit单位的内容(使用union可以,这个后面再讲)。
基本数据类型里,最小的是byte。它是由8个bit所组成的。但是这是为啥呢?
我是好奇宝宝,碰到什么不懂的地方都要问为啥,在追求为啥的过程中感受快乐。
通过各种书籍的阅读和度娘的帮助,我终于明白了真相。(这段有点凑字数嫌疑,以后就不写了,大家自己脑补哈)
简单的2进制计算你就可以得出8位的2进制数可以表示256个不同数值。(不会算的童鞋请去问度娘,这个真需要会)
然后打开词典翻译一下byte的汉语意思,会被翻译成【字节】,也就是字母的意思。
你再想想英语里有多少个字母?26个!
很遗憾,计算机是老美发明的,刚发明的时候也没打算给其他国家用。
于是乎他们规定了一个数值和字母的对应关系表叫【ASCII】(不熟悉的请去问度娘)。
由于美国人文字的贫乏,他们使劲的往里添加可见的不可见的也只凑出了128个字符。
他们想,用一倍的空间来存储字符应该足够了吧。于是就用8位的bit来构建成了byte。
这明显是个失败的设计,因为他没有考虑到有一天计算机会成长的如此庞大。
由于byte不够存储其他语言,使得计算机的多语言道路艰辛了很久。现在我们用UNICODE来解决了。这个以后讲。
计算机在这个世界上还是个年轻的事物,他还需要很久的成长。就像千年虫现象,IPV4问题等等。
---------------------------------------------------------------------------------------------------------------------------------------
笑话一则:
有一天我听到一个同事在抱怨,“联通就知道骗人,我刚升级的20兆宽带,下BT最多就能到2兆多。”
然后我忍不住笑了出来。那个哥们儿道“郭老师,你家的能下到20兆么?”
我无语...
内解:
与通信运营商所签合同的下载速度是:20 Mbps
BT下载的速度是:2.3MBps
缩写含义:Mbps = Mbit每秒 MBps = Mbyte每秒
一个大B等于8个小b。听了笑话你笑了么亲。
---------------------------------------------------------------------------------------------------------------------------------------
以下贴出C语言基本类型的范围,请想在C++世界里奔走的童鞋背下来,印在脑子里。
----------------------------------------------------------------------------------------------------------------------------------------
类型 | 大小 | 范围 |
---|---|---|
整形 | ||
char signed char | 1byte | -128~127 |
unsigned char | 1byte | 0~255 |
int signed int long signed long | 4byte | -2147483648~2147483647 |
unsigned int unsigned long | 4byte | 0~4294967295 |
short signed short | 2byte | -32768~32767 |
unsigned short | 2byte | 0~65535 |
bool(C++ ) | 1byte | 0(false) 1(true) |
小数型 | ||
float | 4byte | ±1.2×10的-34次方~±3.4×10的34次方(7位有效数字) |
double | 8byte | ±2.2×10的-308次方~±1.8×10的308次方(15位有效数字) |