大家可能已经在程序中发现了二进制数有一些有用的属性:
●如果二进制(整数)数的第0位为1,则该数为奇数;如果第0位为0,则该数为偶数。
●如果二进制数的低 n 位都是0,则该数可以被2 n 整除。
●如果二进制数除了第 n 位为1,其他位均为0,则该数等于 2 n 。
●如果二进制数第0~ n 位(不包括第 n 位)均为1,其他位均为0,则该数等于2 n -1。
●将二进制数全部位左移1位的结果等于原二进制数乘以2。
●将无符号二进制数全部位右移1位的结果等于原二进制数除以2(不适用于有符号整数)。如果原二进制数是奇数,则相当于结果四舍五入。
●两个 n 位二进制数的乘积最多需要2× n 位来保存。
●两个 n 位二进制数的和或者差最多需要n+1位来保存。
●将二进制数按位取反(把所有0变成1,1变成0)的结果与对该数求负(改变符号)后减1的结果相等。
●将定位数的最大无符号二进制数加1得到的是数值0。
●将数值0减1得到的是定位数的最大无符号二进制数。
● n 位数是这些位的2 n 个不同组合。
●数值2 n -1一共有 n 位,每一位都是1。
应该记住2 0 ~2 16 中所有2的幂(见表2-4),因为这些数值会反复出现在程序中。
表2-4 2的幂