Also die Überschrift beschreibt mein Problem eigentlich schon recht gut... Ich habe einen 32Bit Wert (int) und muss den in Bytes aufteilen. Wie geht das mit Matlab am Besten? Bitoperationen etc. scheinen ja nicht dessen Stärke zu sein :-(
Hi, sollte eigentlich mit bitand(a,b) und bitshift(a,k,n) zu machen sein. gruß Heinz
1 | byte0 = x & 255 |
2 | byte1 = (x & (255 * 2^8)) / 2^8 |
3 | byte2 = (x & (255 * 2^16)) / 2^16 |
4 | byte3 = (x & (255 * 2^24)) / 2^24 |
x=2^(32)-1; b3 = bitshift(x,-24,32) b2 = bitand(bitshift(x,-16,32),255) b1 = bitand(bitshift(x,-8,32),255) b0 = bitand(x,255)
Kennt jemand eine elegante Methode um im Zweierkomplement gespeicherte Messwerte für Matlab aufzuarbeiten?
Theoretisch müsste man die erste Stelle (MSB) auswerten ob posit. oder negativ und dann die ganze zahl minus 1 und dann negieren. Dann das Ausgewertete vorzeichen Multiplizieren für eine 8 Bit Zahl könnte das z.B. so sein (nicht getestet): if (bitshift(x,-7,8) = 1) wert = -1 * (bitxor(x-1,255)); else wert = (bitxor(x-1,255)); end gruß Heinz
sorry, so ists besser: if (bitshift(x,-7,8) = 1) wert = -1 * (bitxor(x-1,255)); else wert = x; end
if (wert > 32768) %1. Bit gesetzt, also negativ! real = - (65535 - (real-1)); end funktioniert zwar für einen 16Bit Wert, elegant ist es aber nicht..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.