Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.03 KB | None | 0 0
  1.  
  2. public class TestLog {
  3.     public static int findLog(int n) {
  4.         int count = 0;
  5.         int anzahlVerschieben = 1;
  6.         n = n | (n << 1) | 1;
  7.         while (n != -1) {
  8.             n = (n | (n << anzahlVerschieben));
  9.             count++;
  10.             anzahlVerschieben *= 2;
  11.         }
  12.         //Erhalte Intervall (2^(count -1), 2^count]
  13.         //Binäre Suche auf dem erhaltenen Intervall durchführen:
  14.  
  15.         //int untereSchranke = (int)Math.pow(2, (count -1));
  16.         //int obereSchranke = (int)Math.pow(2, count);
  17.         int untereSchranke = anzahlVerschieben;
  18.         int obereSchranke = anzahlVerschieben * 2;
  19.         while (obereSchranke - untereSchranke > 1) {
  20.             int mitte = untereSchranke + (obereSchranke - untereSchranke) / 2;
  21.             int mitteBinary = n | (n << (mitte - anzahlVerschieben));
  22.             if (mitteBinary == -1) {
  23.                 obereSchranke = mitte;
  24.             } else {
  25.                 untereSchranke = mitte;
  26.             }
  27.         }
  28.         return obereSchranke;
  29.     }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement