剑指Offer 15.二进制中1的个数
扩展知识:
该题重点考察的是如何将一个十进制整数转化为它的二进制数形式。有以下三种方法:
- 方法一(除基倒取余法):
类似于数学求二进制的过程,将原数n 不断除以2求出余数然后把商作为下一次的待除数,直到商为0
1 | public void binaryToDecimal(int n){ |
- 方法二(移位操作):
可以利用移位操作对一个十进制数进行移位。将最高位的数移动至最低为(移31位),然后将最低位的其余位置都清零,使用 & 操作,可以使用和 1 相与来获得该位置对应的二进制位数值;再次移动高位,做出相同的操作,直到最后一位。
1 | public void binaryToDecimal2(int n){ |
- 方法三(调用API函数):
使用包装类Integer 的 toBinaryString() 方法将一个int型整数转化为 二进制字符串。
1 | public void function1(int n){ |
之后该题都很简单了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 iStitches!