C++新经典
上QQ阅读APP看书,第一时间看更新

11.1 位的概念和位运算符简介

11.1.1 位的概念

位对于人类,是一个不太好理解的概念,但却是一个计算机很喜欢也很容易理解的概念。前面章节多次提及,一个int型变量占4字节的内存,一个char型变量占1字节的内存。

下面给出一些基本概念,请开始思考和记忆:1字节由8个二进制位组成,最左边的位称为最高位,最右边的位称为最低位,每个二进制位的值是0或者1(二进制数,只有0和1两个数字,不能是其他数字)。

根据这些基本概念,1字节能表示的数字范围,如果用二进制数来表示,能表示的最大二进制数是11111111,最小二进制数是00000000(就是0)。

二进制数11111111等于十进制数的255,如果读者对二进制数如何转换成十进制数不熟悉,建议通过搜索引擎搜索并了解一下,在这里不详细讲解如何转换。

也就是说,十进制数255,对应的二进制数是11111111(8个1)。

再想一想,一个int型(整型)变量占4字节,但其中保存的数据不仅有数字,还有符号位(正负号),因为整型变量不但可以保存正数,还可以保存负数,所以符号位是必须要有并且也包含在int型变量所占的这4字节中。为避免符号位影响对问题的讨论,所以在这里,只讨论unsignedint类型(无符号整型),这个类型数字没有符号位,所以不用考虑符号位,非常方便讨论。那请想一想,4字节的unsignedint型变量,能表示的最大二进制数是多少?1字节能表示8个二进制位,4字节呢?显然,能表示32个二进制位。看下面,等号左侧是二进制数(32个二进制位),等号右侧是十进制数:

11111111,11111111,11111111,11111111=4294967295

所以,十进制数的4294967295就是unsignedint类型能够表示的最大数字。