当前位置: 首页 > 知识库问答 >
问题:

没有java的二进制对数。朗:数学?

奚卓
2023-03-14

不使用数学怎么可能执行二进制对数?现在我有了这个数学。日志(x)/数学。日志(2)它可以工作,但我不能使用java。lang.Math

我能做些什么呢?

int bits_necessaris = (int)(log2(nat + 1)); // This is correct

// The function where I'm having trouble

public static int log2(int x) {
    return (something);
}

重要提示:当我执行Math.log(7)/Math.log(2)时,我得到了2.80XXXXX

所以我这样做了:

(int) Math.ceil(Math.log(7) / Math.log(2));

我得到了ceil(2.80XXXXX)=3

函数的返回必须四舍五入,例如,如果解为6.777,则返回必须为7。

共有1个答案

雷晋
2023-03-14

您想知道表示int需要多少位?然后有更简单的解决方案,例如:

int bitsNeededFor(int i) {
    int bits = 0;
    while (i > 0) {
        bits++;
        i /= 2;
    }
    return bits;
}

仔细想想,以下内容更容易理解:

int bitsNeededFor(int i) {
    return 32 - Integer.numberOfLeadingZeros(i);
}
 类似资料:
  • 问题内容: 我知道用和 将小数转换为二进制(在这里我取32位结果的低16位)。 我想做的是另一种方法,并采用16位二进制补码二进制字符串并将其转换为十进制。 即 而不是 我该怎么做? 问题答案: 您需要将结果读取到中。 此打印。

  • 问题内容: 我正在使用python shell来解决print命令在python中的工作方式。 当我输入 打印01 1 打印010 8 打印0100 64 打印030 24 这里发生了什么?只是基数2?为什么第二个位置的“一个”打印为8?如果不是二进制,应该不是2吗? 问题答案: 以0开头的数字在Python 2中将其标记为八进制。这被认为是令人困惑,令人惊讶且不一致的,因为以0x开头会将其标记为

  • 问题内容: 我正在寻找一种将二进制数字转换为十六进制(JAVA)的方法。问题在于它不能使用预定义的方法来完成,而我只是不知道如何去做。我已经尝试了一些方法,但是使我无法接受包含字符的十六进制数。 提前致谢! 问题答案: 根据您的要求,首先必须将二进制no转换为十进制,然后转换为十六进制。因此,请尝试按照您的要求运行该程序: 如果您有任何疑问,请告诉我。 谢谢…

  • 主要内容:二进制数、八进制数和十六进制数的表示,二进制数、八进制数和十六进制数的输出C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。 二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1) 二进制 二进制由 0 和 1 两个数字组成,使用时必须以

  • 问题内容: 有谁知道如何在Java中添加两个以二进制形式输入的二进制数字? 例如,。 问题答案: 使用。

  • 二进制数组(ArrayBuffer对象、TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。 这个接口的原始设计目的,与WebGL项目有关。所谓WebGL,就是指浏览器与显卡之间的通信接口,为了满足JavaScript与显卡之间大量的、