鉴于大家对C/C++十分关注,我们编辑小组在此为大家搜集整理了“C++的整型字面量和二进制数”一文,供大家参考学习
整型字面量
可以用非常直接的方式表示整型字面量。下面是一些例子:
–123 +123 123 22333
其中,前两个例子中的“+”和“–”号是前面提及的一元运算符。在第二个例子中,可以省略“+”,因为这是默认的,但为了使该数值的含义更清晰,加上“+”也不会出问题。字面量+123与123是相同的。第4个例子在一般情况下写为22,333,但在整型字面量中不能使用逗号。如果使用了逗号,编译器就会把该数值当做用逗号分隔开的两个数值。
也不能使用老式的整数值。举一个极端的例子,系统不接受有100位的整数。整型字面量是有上限和下限的,这是由存储每种类型的整数值的内存量决定的。本章在后面介绍整型变量时将讨论这个问题。
当然,可以把整型字面量写成小数值,在计算机中这些值将存储为二进制数值。在编程时理解二进制是非常重要的,为了防止读者对二进制数字的工作方式有误解,下面就简要介绍一下。
二进制数
首先考虑一下在表示常见的十进制数,如324或911,时会做什么。显然,324是表示三百二十四,911表示九百一十一。更明确地说,这两个数表示:
324是:3×102+2×101+4×100,也就是3×10×10+2×10+4
911是:9×102+1×101+1×100,也就是9×10×10+1×10+1
这称为十进制表示法,因为这是建立在10的幂的基础之上(来源于拉丁词decimalis,其含义是什一税,即税的10%)。
以这种方式表示数值非常方便,因为人有10根手指或10根脚趾或者10个任何类型的附属物。但是,这对PC就不太方便了,因为PC主要以开关为基础,即开和关,加起来只有2,而不是10。这就是计算机用基数2来表示数值,而不是用基数10的主要原因。这称为二进制计数系统。数字只能是0或1,当只用开/关来表示数字时,这是很理想的。按照基数为10的计数系统的方法,二进制数1101就可以分解为:
1×23+1×22+0×21+1×20,也就是1×2×2×2+1×2×2+0×2+1
计算得13(十进制系统)。在表2-1中,列出了用8个二进制数字表示的对应的十进制值(二进制数字常常称为位)。
表2-1
注意使用前7位可以表示从0到127的数,一共27个数,使用全部8位可以表示256(即28)个数。一般情况下,如果有n位,就可以表示2n个整数,其值从0到2n-1。
在计算机中,二进制数相加是非常容易的,因为对应数字加起来的进位只能是0或1,所以处理过程会非常简单。图2-1中的例子演示了两个8位二进制数相加的过程。