编程卓越之道(卷1):深入理解计算机(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 二进制数的属性 

大家可能已经在程序中发现了二进制数有一些有用的属性:

●如果二进制(整数)数的第0位为1,则该数为奇数;如果第0位为0,则该数为偶数。

●如果二进制数的低n位都是0,则该数可以被2n整除。

●如果二进制数除了第n位为1,其他位均为0,则该数等于 2n

●如果二进制数第0~n位(不包括第n位)均为1,其他位均为0,则该数等于2n-1。

●将二进制数全部位左移1位的结果等于原二进制数乘以2。

●将无符号二进制数全部位右移1位的结果等于原二进制数除以2(不适用于有符号整数)。如果原二进制数是奇数,则相当于结果四舍五入。

●两个n位二进制数的乘积最多需要2×n位来保存。

●两个n位二进制数的和或者差最多需要n+1位来保存。

●将二进制数按位取反(把所有0变成1,1变成0)的结果与对该数求负(改变符号)后减1的结果相等。

●将定位数的最大无符号二进制数加1得到的是数值0。

●将数值0减1得到的是定位数的最大无符号二进制数。

n位数是这些位的2n个不同组合。

●数值2n-1一共有n位,每一位都是1。

应该记住20~216中所有2的幂(见表2-4),因为这些数值会反复出现在程序中。

表2-4 2的幂