Ich versuche, die Formel zu finden, um die maximale Bitbreite zu berechnen, die erforderlich ist, um eine Summe von vorzeichenlosen Binärzahlen mit M n Bit zu enthalten. Vielen Dank!Maximale Bitbreite zum Speichern einer Summe von M n-Bit-Binärzahlen
Antwort
Die maximal benötigte Bitbreite sollte
sein.ceil(log_2(M * (2^n - 1)))
Bearbeiten: Dank @MBurnham merke ich jetzt, dass es floor(log_2(M * (2^n - 1))) + 1
stattdessen sein sollte.
Hm ... Ich habe beide Formeln experimentell mit Wolfram Alpha getestet ... scheint, als wäre noch was los ... – bfung
@bfung Aus wie? – xunatai
zum Beispiel, für M = 9 und n = 3, Ihre vorgeschlagene Formel gibt 7. Wenn ich 0b111 für 9 mal in Wolfram Alpha hinzufügen, ist die Antwort = 6b111111. – bfung
Unter der Annahme positiver Ganzzahlen benötigen Sie floor (log2 (x)) + 1 Bits zum Speichern von x. und der größte Wert, den die Summe von m n-Bit-Zahlen erzeugen kann, wäre m * 2^n. Also ich glaube, die Formel
sein solltefloor(log2(m * 2^n)) + 1
Bits.
Die größte n-Bit-Nummer ist 2^n-1, nicht 2^n – mbschenkel
@mbschenkel für nur 1 Zahl, die Sie richtig haben, aber wenn Sie eine Summe aus zwei Zahlen haben, können Sie Werte zur nächsten Ziffer übertragen. Sie müssen also ein extra Bit für Übertragungen speichern – MBurnham
Sie kümmern sich schon darum mit dem Faktor 'm'. Wenn "B = 2^n-1" der größtmögliche Wert von Eins ist, dann ist "m * B" die größtmögliche Summe von "m" Summanden, nicht "m * (B + 1)". – mbschenkel
Wenn ich 2 Zahlen addiere, brauche ich 1 Bit mehr als die breitere der 2 Zahlen, um das Ergebnis zu speichern. Also, wenn ich 2 n-Bit-Zahlen addiere, brauche ich n + 1 Bits, um das Ergebnis zu speichern.
if I add another n-bit number, I need (n+1)+1 bits to store the result (that's 3 n-bit numbers added so far)
if I add another n-bit number, I need ((n+1)+1)+1 bits to store the result (that's 4 n-bit numbers added so far)
if I add another n-bit number, I need (((n+1)+1)+1)+1 bits to store the result (that's 5 n-bit numbers added so far)
Also, ich glaube, Ihre Formel ist
n + M - 1
Dies ist eine Obergrenze, aber nicht unbedingt das Minimum (trotz der Tatsache, dass OP nach Max fragt ...). Wenn Sie zwei Zahlen addieren, verwenden Sie nicht den vollen Bereich: z. B. 1 + 1 = 10, nicht 11, 1 + 1 + 1 = 11 und das dritte Bit überhaupt nicht. Dies ist jedoch für zweiwertige negative Zahlen unterschiedlich. – mbschenkel
- 1. Numpy: Effiziente Summe Submatrix m von M
- 2. maximale Summe aus einer Teilmenge der Größe K mit Summe weniger als M
- 3. Maximale Summe von k verbundenen Elementen einer Matrix
- 4. Maximale Summe in einem Subarray
- 5. Berechnung Summe der geometrischen Reihe (mod m)
- 6. Need M Script auf Werte von verbundenen/fusionierten Abfragen Summe
- 7. Maximale zusammenhängende Summe mit Dividieren und Conquer
- 8. Maximale Summe von nicht benachbarten Elementen in einem 2D-Array
- 9. Finden Sie die maximale Summe möglich
- 10. Bestimmen maximale Summe von Tasten Subarrays mit max-Wert gegeben
- 11. Verwenden einer Hashtabelle zum Speichern von Schlüsseln?
- 12. Speichern/Speichern einer laufenden Summe außerhalb der Funktion von innerhalb einer Funktion
- 13. Kann die Bitbreite einer Enumeration in C++ 11 angegeben werden?
- 14. Kürzester Befehl zum Berechnen der Summe einer Ausgabespalte unter Unix?
- 15. Gieriger Algorithmus zum Paaren von Zahlen, der die maximale Summe minimiert
- 16. Kann BASH die Zahlen mit der Prozessor-Bitbreite skalieren?
- 17. Maximale Summe aller angrenzenden Sub-Arrays von vorrangiger Länge
- 18. Maximale Länge einer OpenID
- 19. Die beste Methode zum Speichern von Eingabewerten
- 20. Auswahl Zufallszahlen N Zeit in einem Tag mit Summe M
- 21. -Code die Summe der Quadrate zu maximieren Modulo m
- 22. Wählen Sie eine Liste von Artikel aus Datensatz, die maximale Summe von item.quality in limitierter Summe von item.time haben
- 23. Finden Sie die größte Bitbreite von synthetisierbaren Datentypen in Systemverilog
- 24. Groovier-Methode zum Abrufen einer Summe aus einer verschachtelten Eigenschaft
- 25. Finden Sie die maximale Summe der Elemente im Array
- 26. Maximale Rekursionstiefe überschritten, Methode speichern, Django
- 27. Verwenden von jQuery.data zum Speichern einer Liste von Elementen
- 28. Aufruf von Funktionen in einer Sequenz zum Speichern von Ergebnissen
- 29. Funktion zum Speichern von ggplot
- 30. Maximale Summe nicht benachbarter Elemente in 1D-Array
gut, wenn ich zwei Ein-Bit-Zahlen addieren es bis zu zwei Bits nehmen. Wenn ich zwei zwei Bit-Zahlen addiere, kann es im schlimmsten Fall drei Bits für das Überrollen nehmen. Wenn ich zwei Drei-Bit-Zahlen addiere, benötigt der Worst-Case vier ... –
Wenn ich 1111 mit 1 ein Vier-Bit und ein 1-Bit addiere, benötigt es fünf als Ergebnis. Nicht anders als zwei einziffrige Dezimalzahlen können zweistellige Ergebnisse usw. benötigen. –