我對這個問題有疑問,任何幫助都會很棒!截斷的二進制對數
編寫一個程序,該程序將一個整數N作爲參數 並打印出其截斷的二進制對數[log2 N]。提示:的log 2 N] = 1的最大整數`這樣 2 ^升< = N.
我得到了這麼多下來:
int N = Integer.parseInt(args[0]);
double l = Math.log(N)/Math.log(2);
double a = Math.pow(2, l);
但我無法弄清楚如何截斷L,同時保持2 ^升< = N
感謝
這是我現在有:
int N = Integer.parseInt(args [0]);
int i = 0; // loop control counter
int v = 1; // current power of two
while (Math.pow(2 , i) <= N) {
i = i + 1;
v = 2 * v;
}
System.out.println(Integer.highestOneBit(N));
這樣就會打印出整數等於2 ^我這將是小於N.我的測試仍然出來假的,我認爲這是因爲這個問題是問打印的我認爲是最大的而不是因此,當我做
Integer.highestOneBit(i)本N.
正確我不打印出來。例如,如果我做的:N = 38,則最高的I應爲5,而是它打印出4
然後我試圖這樣:
int N = Integer.parseInt(args[0]);
int i; // loop control counter
for (i= 0; Math.pow(2 , i) == N; i++) {
}
System.out.println(Integer.highestOneBit(i));
在哪裏,如果我使N = 2 I應該打印出來是1,而是它打印出0.
我已經嘗試了一堆事情的最重要,但不能得到我做錯了什麼。幫助將不勝感激。謝謝
歡迎來到Stack Overflow!堆棧溢出不適合其他人爲你做功課,但我們可以幫助你引導。到目前爲止,你有什麼嘗試? –
嗨,當然!我只是不明白2^l可以如何
user2874403
林也試圖兩種方法的權力,並試圖從它倒退 – user2874403