gpt4 book ai didi

java - 查找特定整数的最大位数

转载 作者:行者123 更新时间:2023-12-02 12:09:04 25 4
gpt4 key购买 nike

好吧,伙计们,我完全被这个小问题困扰了,我花了几个小时试图研究和弄清楚。基本上我要做的就是找到整数的最大位数(使用字节作为限制)。我想做的一个例子是: int 5 将显示为 8,因为在一个字节中它存储为 0000 0101。所有直到(包括 255)的内容都应该输出 8。一旦达到 256,它应该输出16,因为它将存储为 0001 0000 0000 。我可以使用 if 语句,但是有没有更简单的方法使用日志来做到这一点?

到目前为止我所拥有的是:

    int x = 5;
int len = (Integer.toString(x)).length();
double bits = Math.ceil(len*(Math.log(10)/Math.log(2)));
System.out.println(bits);

最佳答案

一个非常简单的方法:

final double DIVISOR = Math.log(256);

int x = 5;
double bytes = Math.log(x) / DIVISOR;
int bits = (int) Math.ceil(bytes) * 8;

通过计算以 256 为基数的位数来计算数字的字节数(包括部分字节)。这使用了两个技巧:

  • n 为基数的数字 x 的位数由 logn(x) 给出。
  • 对于任何 m<,
  • logn(x) 相当于 logm(x)/logm(n)/em>.

然后将结果向上舍入(以处理任何部分字节),并乘以八以获得位数。

但是请注意,这不一定是一种非常有效的方法。有可能使用位操作的更有效的方法,但可能有点难以理解。至少,这种方法看起来与您已经尝试过的方法相似。

关于java - 查找特定整数的最大位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46679450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com