目的:学习位运算的特征,学会使用位运算代替除法和求余运算的方法。
内容:使用位运算,不能使用除法(/)和求余(%)运算,求某个十进制整数的二进制表示中有多少个1. 分析该程序的时间复杂度,即:当整数为n时,程序共执行了多少个位运算。
进阶:如何计算出某个十进制整数的八进制表示中有多少个6?能否编写一个函数,以十进制整数和八进制的数字(0~7)作为两个参数,求出该八进制数字在十进制整数的八进制表示中出现的次数。提示:需要用到“移位”、“按位异或”以及“按位与”等运算。 该函数的雏形如下:
代码
/******************************************
* 概要:
* 求某个十进制数的八进制表示中,
* 某个八进制数字出现的次数
*
* 参数:
* int octalDigit: 八进制的某个数字
* int decimalNumber: 十进制整数
*
* 返回值:
* octalDigit在decimalNumber的八进制
* 表示中出现的次数
******************************************/
int numberOfOctalDigit(int octalDigit, int decimalNumber)
* 概要:
* 求某个十进制数的八进制表示中,
* 某个八进制数字出现的次数
*
* 参数:
* int octalDigit: 八进制的某个数字
* int decimalNumber: 十进制整数
*
* 返回值:
* octalDigit在decimalNumber的八进制
* 表示中出现的次数
******************************************/
int numberOfOctalDigit(int octalDigit, int decimalNumber)