摘自:《编程卓越之道:深入计算机系统》
二进制数有一些很有趣的东西可以学习,而且它们对我们的开发会带来很大的帮助,这些特性是:
1、如果一个二进制(整型)数的第零位的值是一,那么这个数就是奇数;而如果该位是零,那么这个数就是偶数。
2、如果一个二进制数的低端n位都是零,那么这个数可以被2n整除。
3、如果一个二进制数的第n位是一,而其他各位都是零,那么这个数等于2n。
4、如果一个二进制数的第零位到第n位(但不包含位n)都是一,而其他各位都是零,那么这个数等于2n-1。
5、将一个二进制数的所有为左移一位的结果是将该数乘以二。
6、将一个无符号二进制数的所有位右移一位的结果等效于该数除以二(这对有符号数不适用)。余数会被下舍入(round down)。
7、将两个n位二进制数相乘可能会需要2*n位来保存结果。
8、将两个n位数相加或者相减绝对不会需要多于n+1位来保存结果。
9、将一个二进制数的所有位取反等效于将该数取负(改变符号)再将结果减一。
10、将任意给定个数的位表示的最大的无符号二进制数加一的结果永远是零。
11、零递减(减一)的结果永远是某个给定个数的位表示的最大无符号二进制数。
12、n位可以表示2n个不同的组合。
13、数2n-1包含n位,所有位都是一。
收藏之,与众共享,忘日后善用。
二进制数有一些很有趣的东西可以学习,而且它们对我们的开发会带来很大的帮助,这些特性是:
1、如果一个二进制(整型)数的第零位的值是一,那么这个数就是奇数;而如果该位是零,那么这个数就是偶数。
2、如果一个二进制数的低端n位都是零,那么这个数可以被2n整除。
3、如果一个二进制数的第n位是一,而其他各位都是零,那么这个数等于2n。
4、如果一个二进制数的第零位到第n位(但不包含位n)都是一,而其他各位都是零,那么这个数等于2n-1。
5、将一个二进制数的所有为左移一位的结果是将该数乘以二。
6、将一个无符号二进制数的所有位右移一位的结果等效于该数除以二(这对有符号数不适用)。余数会被下舍入(round down)。
7、将两个n位二进制数相乘可能会需要2*n位来保存结果。
8、将两个n位数相加或者相减绝对不会需要多于n+1位来保存结果。
9、将一个二进制数的所有位取反等效于将该数取负(改变符号)再将结果减一。
10、将任意给定个数的位表示的最大的无符号二进制数加一的结果永远是零。
11、零递减(减一)的结果永远是某个给定个数的位表示的最大无符号二进制数。
12、n位可以表示2n个不同的组合。
13、数2n-1包含n位,所有位都是一。
收藏之,与众共享,忘日后善用。