Forum: PC-Programmierung Sinn hinter der Aufgabe: "Check if a given number is sparse"


von Zahlenjongleur (Gast)


Lesenswert?

Hallo zusammen,

bin gerade über folgenden Artikel [1] gestolpert. Simpel ist es aber ich 
frage mich, warum man das wissen wollen würde?

Gruß

[1] 
http://www.geeksforgeeks.org/check-if-a-given-number-is-sparse-or-not/

von Walter T. (nicolas)


Lesenswert?

Zahlenjongleur schrieb:
> warum man das wissen wollen würde?

z.B. zum Packen.

von Bit Klemnpner (Gast)


Lesenswert?

Zahlenjongleur schrieb:
> bin gerade über folgenden Artikel [1] gestolpert. Simpel ist es aber ich
> frage mich, warum man das wissen wollen würde?

beispielsweise für serielle Multiplikation, bei der die Anzahl der '1' 
bits angibt wie oft addiert werden muss, also

0xFFFF  * 0x0003 braucht nur 2 additionen während
0x0003 * 0xFFFF  16 braucht.  Es kann also sinn machen beide Operanden 
zu tauschen. Natürlich sollte man vorher mit realen Daten simuliereon ob 
man durch den test und das Umsortieren nicht mehr Operation benötigt als 
man spart.

Und gibt es noch das problem der Gleichstromfreiheit und 
taktrückgewinnung, bei demm lange folgen von Nullen mit '1'-bist 
aufbricht (bit stuffing - https://de.wikipedia.org/wiki/Bitstopfen). Da 
ist das Testen auf schwach besetzte Wörter ein simpler Test ob man hier 
bitstuffing nutzen sollte.

von Zahlenjongleur (Gast)


Lesenswert?

Danke für die Erleuchtung.. :-D

von Vlad T. (vlad_tepesch)


Lesenswert?

die da gezeigte Implementierung ist aber blöd.

1. signed ints zu schieben ist "implementation defined behaviour".
2. jede zahl -1610612735 < n < 0 ist nicht sparse, weil die oberen bits 
wegen dem 2er Komplement gesetzt sind. - Ist das Absicht?

von Zahlenjongleur (Gast)


Lesenswert?

Vlad T. schrieb:
> die da gezeigte Implementierung ist aber blöd.
>
> 1. signed ints zu schieben ist "implementation defined behaviour".
> 2. jede zahl -1610612735 < n < 0 ist nicht sparse, weil die oberen bits
> wegen dem 2er Komplement gesetzt sind. - Ist das Absicht?

Stimmt.. aber das steht ja auch dabei!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.