美文网首页
求一个整数转换成二进制后的位数

求一个整数转换成二进制后的位数

作者: 好学人 | 来源:发表于2019-11-18 11:01 被阅读0次

题目描述:

给定一个正整数n,求将n转换为二进制后有多少位?

例如:10转换为二进制后为1010,共有4位。

思路分析:

根据抽象问题具体化,具体问题特殊化的思考原则,我们先列举几个例子:

2^1 = 2 -> 10 -> 2      11->3=2^2-1

2^2 = 4 -> 100 -> 3     111->7=2^3-1

2^3 = 8 -> 1000 -> 4    1111->15=2^4-1

2^4 = 16 -> 10000 -> 5  11111->31=2^5-1

由以前例子可以总结出以下规律:

如果一个二进制数字bx位,那么b能表示的最小值为2^(x-1),b能表示的最大值为2^x-1。即2^(x-1) ≤ b ≤ 2^x-1

因此,我们只要计算出给定的正整数n2的多少次方即可。即y=log(2, n)

代码实现:

/**
 * 计算一个整数转换为二进制后有多少位
 * 比如:8转换为二进制后为1000,共有4位;
 * 31转换为二进制后为 11111,共有5位
 */
public double getBinaryBit(int n) {
    double log2_n = Math.log(n) / Math.log(2);
    double bits = Math.floor(log2_n + 1);
    return bits;
}

总结:

本题解法采用了抽象问题具体化,具体问题特殊化的思维方式,推导出了问题的一般规律,然后利用Java的Math.log()API 解决了问题。

相关文章

  • 求一个整数转换成二进制后的位数

    题目描述: 给定一个正整数n,求将n转换为二进制后有多少位? 例如:10转换为二进制后为1010,共有4位。 思路...

  • 476. Number Complement

    题目分析 题目链接,登录 LeetCode 后可用这道题目要求是求一个正整数的补数,并且假设正整数的二进制形式不以...

  • 计算机数据表示

    摘要: 一、二进制数的表示 n:二进制数整数位数 m:二进制数小数位数 B:二进制数标记 如:10111B.110...

  • 1268

    1268: 求整数的位数以及各位数之和 Time Limit: 1 SecMemory Limit: 128 MB...

  • 一、位运算

    题目 1、求一个整数,二进制时1的个数 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:最...

  • (十六进制十进制二进制八进制)进制转换计算机基础

    1.十进制转R进制 1.1 十进制转二进制 十进制整数转二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小...

  • 【习题24】求整数的位数和逆序输出

    【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

  • day22

    题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 程序 #include int ...

  • LeetCode 191. 位1的个数

    题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被...

  • 剑指 Offer 15 二进制中1的个数

    题意:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被...

网友评论

      本文标题:求一个整数转换成二进制后的位数

      本文链接:https://www.haomeiwen.com/subject/dcyvictx.html