integer Zahl durch 1024 teilen

Gast #3651112
Lesenswert?

Mir geht es hier um das Verständnis. Meine Protokoll gibt mir eine 
Integerzahl aus. z.B. -5566 oder 20000.


Das Ergebnis das ich aber brauche ist für mich seltsamerweise immer die 
Division durch 1024.


Ich verstehe aber nicht warum und warum gerade 1024 der Teiler ist.


-5566/1024 = -5,43...(stimmt)
20000/1024 = 19,53... (stimmt auch)
#3651120
Lesenswert?

Bastler schrieb:
> Pascal probiert und gerade dabei den Unterschied zwischen / und div zu
> lernen?

Keine Sorge, das ist schon länger her. Und hättest du meine Antwort 
davor verstanden, dann hättest du erkennen können, dass ich den kenne. 
Es ist nur einfach so, dass in der Frage jeglicher Kontext fehlte. Bei 
solchen Fragen neige ich dazu, mir diesen Kontext nach Gusto hinzu zu 
erfinden, gern etwas schräg.
Gast #3651122
Lesenswert?

top schrieb:
> Mir geht es hier um das Verständnis. Meine Protokoll gibt mir eine
> Integerzahl aus. z.B. -5566 oder 20000.
>
> Das Ergebnis das ich aber brauche ist für mich seltsamerweise immer die
> Division durch 1024.
>
> Ich verstehe aber nicht warum und warum gerade 1024 der Teiler ist.
>
> -5566/1024 = -5,43...(stimmt)
> 20000/1024 = 19,53... (stimmt auch)

Und woher weisst Du, dass bei -5566 das Ergebnis, dass Du brauchst,-5,43 
ist?
Gast #3651134
Lesenswert?

Ich möchte Werte aus einem Protokoll extrahieren.

Die Daten liegen in Hex vor. Immer 4Byte ergeben einen Wert.


Die 4 Byte habe ich zusammengefasst.

L=a0*2^0+a1*2^8+a2*2^16+b3*2^24


Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes 
Ergebnis, aber warum?

VG
Gast #3651152
Lesenswert?

>Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
>Ergebnis, aber warum?

Warum? Ja, das ist so gewesen:

Als eines Tages der Schreiner Ovid Kevin Müller-Katzenstein am Brunnen 
saß kam ein Floh vorbei. Der Floh hatte schlechte Laune, war aber 
gewillt, sich mit einem Pflaumenmußbrot mit Senf zufrieden zu geben, 
anstatt die Welt mit der universellen Konstante in den Abgrund zu 
reißen. Im Gegensatz zur allgemeinen Meinung nämlich ist die universelle 
Konstante kein Segen sondern ein Fluch. Aber das wusste damals niemand.
Und so war der Schreiner Ovid Kevin Müller-Katzenstein der Mensch, der 
unwissen die Welt in den Abgrund riß. Er sah nämlich nicht hin. Dass 
heißt, er sah nach oben in die Wolken und dachte noch, dass die eine da, 
über dem Haus der Witwe Bollinger, die immer so gute Rostbratwürstel 
briet, irgendwie aussah wie ein Floh. Das er nur nach links unten, neben 
seinen rechten Schuh hätte schauen müssen, um einen echten Floh zu sehen 
und damit auch noch die Welt gerettet hätte, wußte er nicht. Nach der 
Wolke sah er noch den Nagel seines linken Daumens an, der eine Maniküre 
nötig gehabt hätte und dann kratzte er sich am Hals. Da hatte der Floh 
nämlich hingebissen, vor lauter Verzweiflung, nicht beachtet zu werden.
Er wich dem rechten Zeigefinger des Schreiners Ovid Kevin 
Müller-Katzenstein geschicht aus und dachte: Jetzt zeig' ich's Euch.
Da erfand er die Zahl, durch die von nun an jede andere Zahl geteilt 
werden musste, damit man das richtige Ergebnis erhielt.

So war das, damals.
#3651194
Lesenswert?

Ich les' hier immer Gleitkomma, Festkomma, ...

Mach doch einfach Ergebnis = Wurstiges_Input >> 10.
Da is nix mit Komma und dein Wert stimmt. Und der Prozi kann das richtig 
fix.

Und sowieso ist die Frage wirklich der Hammer!

"Nachts ist es kälter als draußen, und ich möchte verstehen, warum? 
Immer, wenn ich links gehe, dann Peng!". Ergibt alles keinen Sinn.
#3651199
Lesenswert?

top schrieb:
> Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
> Ergebnis, aber warum?

Da mußt Du mal in der Beschreibung des bisher nicht genannten Protokolls 
nachlesen. In Deinen Kopf schauen können wir nicht.


top schrieb:
> -5566/1024 = -5,43...(stimmt)
> 20000/1024 = 19,53... (stimmt auch)

Also in C stimmt beides nicht. Du mußt mindestens einen Operanden nach 
float casten.
Der Compiler kann ja nicht Deine Gedanken lesen, für ihn gilt:
int / int = int.
#3651231
Lesenswert?

Die zur Analyse und Beantwortung der Frage nötige Aufforderung zur 
Offenlegung der Quelle/des Protokoll überliest du geflissentlich?

Implizit also: Es fehlen alle Hintergrundinformationen.

Daher tippe ich darauf, dass die von Außerirdischen gezwungen wurden, 
das um 10 Bit zu schieben.
Gast #3651238
Lesenswert?

Ich möchte Werte aus einem IP-Protokoll extrahieren.

Immer 4Byte ergeben einen Wert.

255 155 100 0

Die 4 Byte habe ich zusammengefasst.

L=a0*2^0+a1*2^8+a2*2^16+b3*2^24


Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
Ergebnis, aber warum?

VG
Gast #3651242
Lesenswert?

top schrieb:
> Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
> Ergebnis, aber warum?

witziger Zufall.
Ich muss durch 731 teilen, um mein gewünschtes Ergebnis zu bekommen.
Ob das vielleicht daran liegt, dass ich mir ein anderes Ergebnis 
wünsche?
#3651247
Lesenswert?

top schrieb:
> Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
> Ergebnis, aber warum?

Weil das Nesthäkchen des Entwicklers vom Protokoll tags zuvor 10 Jahre 
alt wurde und der Entwickler sich mit Zweierpotenzen auskannte.

So allmählich sollte eigentlich der Groschen gefallen sein. Andernfalls 
ist was in der Groschenfallmaschine kaputt.
#3651292
Lesenswert?

top schrieb:
> Ich möchte Werte aus einem IP-Protokoll extrahieren.

Aus welchem genau.

IPv4? http://www.ietf.org/rfc/rfc791.txt
IPv6? http://www.ietf.org/rfc/rfc2460.txt
Oder die nächste schicht? tcp/ip? http://www.ietf.org/rfc/rfc793.txt

> Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
> Ergebnis, aber warum?

Das es im IP-Protokoll Zahlen mit Nachkomma gibt, ist mir neu.
Woher hast du die Info, welches Resultat du haben möchtest?
Ist es wirklich ein IP Protokoll?

Spezifiziere: Genaues Protokoll, ALLE eingabewerte, Alle ausgangswerte, 
Quelle, Zeile.
Gast #3651339
Lesenswert?

nicht "Gast" schrieb:

> Eventuell geht es um eine Subnetzmaske? /22 wären die letzten 10 Bits
> "egal"...

Vorsicht, es ist eine ganz blöde Idee, Host- und Netzadresse mittels 
Shift-Operationen zu trennen.

Daß die Netzadresse ein durchgängiger Block von Bits in der "linken 
Hälfte" einer IPv4-Adresse ist, ist nur eine Empfehlung, keine zwingende 
Verpflichtung.

Genau deswegen gibt's neben der CIDR-Schreibweise für Netzmasken auch 
die klassische als IP-Adresse. Nur die kann nämlich alle Fälle abbilden, 
auch die, die nicht der Empfehlung entsprechen.

Und die Abtrennung von Netz und Host macht man so, wie sie auch die 
Hardware macht, denn das paßt immer, unabhängig von Endianess und der 
konkreten Netzwerkmaske:

Netz=Adresse & Netzwerkmaske
Host=Adresse & !Netzwerkmaske
Gast #3651369
Lesenswert?

top schrieb:
> Ok verstanden...
>
> Mal im ernst, warum schifftet man dann hier gerade um 10?

Ganz großes Kino.

Lieber "top",
deine Fragestellung hat dir auch nach zig Forumsbeiträgen keine Antwort 
geliefert.
Warum?
Es wurde doch klar, dass es sich um eine Zahl handelt, die einen 
10-stelligen binären Nachkommaanteil enthält.
Warum und wozu kann dir nicht mal der Allmächtige sagen, ohne dass du 
uns erklärst, wo deine "-5566" und "20000" herkommen, und was mit dieser 
Zahl gemacht werden soll.
Ein Codebeispiel wäre hier zielführend, aus dem hervorgeht, wie diese 
Zahlen einer Variablen zugewiesen werden, und was weiter mit dieser Zahl 
passiert.
#3653961
Lesenswert?

top schrieb:

> Wenn ich jetzt genau durch 1024 teile bekomme ich mein gewünschtes
> Ergebnis, aber warum?


Das liegt daran, dass die NSA deine Daten zu deiner eigenen Sicherheit 
verschlüsselt. Da der NSA Schlüssel Großbuchstaben, Kleinbuchstaben und 
Sonderzeichen enthalten muss hat man sich innerhalb der NSA auf den 
Schlüssel "Obama " geeinigt. In ASCII ist das:
"O" = 0x4F = 79
"b" = 0x62 = 98
"a" = 0x61 = 97
"m" = 0x6D = 109
"a" = 0x61 = 97
" " = 0x20 = 32

79+98+97+109+97+32=512

Damit es nicht so leicht zu entschlüsseln ist wird das ganze jetzt noch 
um eine Bit geshiftet. Das enspricht Multiplikation mit 2. Also 512*2 = 
1024.

Daher sind alle deine Daten mit 1024 multipliziert, um für die NSA 
leicht auswertbar zu sein und dich gleichzeitig vor der Wahrheit zu 
schützen. Der Länder übergreifende Schlüssel mach dann den Austausch der 
Daten innerhalb der NSA leichter.
#3654246
Lesenswert?

Arsch Gwaf schrieb:
> Das liegt daran, dass die NSA ...... den
> Schlüssel "Obama " geeinigt. In ASCII ist das:
> "O" = 0x4F = 79
> "b" = 0x62 = 98
> "a" = 0x61 = 97
> "m" = 0x6D = 109
> "a" = 0x61 = 97
> " " = 0x20 = 32
>
> 79+98+97+109+97+32=512
>
> Damit es nicht so leicht zu entschlüsseln ist wird das ganze jetzt noch
> um eine Bit geshiftet. Das enspricht Multiplikation mit 2. Also 512*2 =
> 1024.

YMMD :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren