Wie viele bits Sie brauchen, um zu speichern eine positive ganze Zahl?
Wieviel bit würde man benötigen, um zu speichern eine positive ganze Zahl beispielsweise in Milliardenhöhe? Würdest du den log2 N dies heraus zu finden?
- Als integer oder floating-point-und mit welcher Genauigkeit?
- Signed oder unsigned? Das heißt, negative Ganzzahlen möglich, oder sind Sie daran interessiert, die nur nicht-negative Ganzzahlen? (Ich nehme es aus das Ihre Frage ist Kontext, du sprichst von ganzen zahlen, nicht-floating-point-zahlen.)
- Ja, ich spreche positive ganze zahlen sind. So wäre es den log2 N?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da ich gesehen habe, ist die Antwort falsch gemeldet, so viele Male, ich dachte, ich würde post die richtige Antwort.
Anzahl der bits, die benötigt werden, um repräsentieren die positive ganze Zahl n ist
wo log2 bedeutet Logarithmus zur Basis 2.
n = 18446744073709551615
(gleichn = pow(2, 8 * sizeof(unsigned long))
auf einex86_64
box), weillog2(n) = 64
in diesem Fall+ 1
zu hoch ist. Gibt es irgendwelche Nachteile bei der Verwendungbits = ceil(log2(n))
statt?Math.log2(16).ceil
gleich4
, aber wir müssen5
, soMath.log2(16).floor + 1
richtig ist.Math.log2((1 << 64) - 1)
gleich64
wegen der unzureichenden Genauigkeit.bits_reqd_for_num = math.ceil(math.log2(num+1))
Ja. die maximale Anzahl gespeichert, die in k bits ist 2^k-1, da es 2^k Möglichkeiten für die bits, und einer von Ihnen ist null.
Daher ist die Anzahl der erforderlichen bits zur Speicherung einer Zahl N ist log2(N), da es aber keine halben bit, Sie brauchen, um bis zu die cloest integer vor.
Hinweis: wenn Sie negative zahlen, muss es ein mehr bit für das Vorzeichen.
Nur um die vorherigen zu beantworten, können Sie herausfinden, wie viele bits nötig sind, um eine Zahl darstellen
N
mathematisch mit jedem log-Basis. Zum Beispiel, sagen, ich will wissen, wie viele bits notwendig sind, stellen die Zahl 12345, aber mein Rechner kennt nurln
(natürlicher Logarithmus).So,
Unter der
ln
von beiden Seiten.Natürlich das log von einer Zahl ein exponent ist, der exponent mal die log, der nur in der base So,
Teilen sowohl einseitig von ln(2),
Und natürlich, wie es in der anderen Antwort, die Sie müssen, um dieses Ergebnis, weil zu repräsentieren, eine Zahl, die Sie benötigen 2^b gleich oder größer als die Anzahl.
So,
Wo
ceil(f)
Rundenf
bis auf die nächste Ganzzahl.Unter Verwendung des oben beschriebenen Prozesses finden Sie die Anzahl der bits, die benötigt werden für eine beliebige Anzahl
N
mit jedem log-baselogb
, d.h.,b = ceil(logb(N+1) / logb(2))