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 :-(
Gast
#1449974
Hi, sollte eigentlich mit bitand(a,b) und bitshift(a,k,n) zu machen sein. gruß Heinz
1 | |
2 | |
3 | |
4 | |
Gast
#1449982
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)
Danke Heinz, funktioniert wunderbar!
Kennt jemand eine elegante Methode um im Zweierkomplement gespeicherte Messwerte für Matlab aufzuarbeiten?
Gast
#1450145
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
Gast
#1450148
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..
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.