|
LosTk |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 21.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.02.2011, 10:12
Titel: Bitweise Operationen
|
|
Hallo Miteinander,
folgendes Problem:
Ich habe in ein Simulink Modell (siehe Anhang) mit integriertem Stateflow in dem ich verschiedene Bitoperationen durchführen will. (Enable C-Bit Operatioinen ist aktiviert).
Wenn ich die zu Beschreibende Variable auf Datentyp int8 setze gibt es keine Probleme, setze ich ihn allerdings auf uint8 wie ich es will, so kommt die Fehlermeldung die auch bei euch (hoffentlich) auftauchen sollte.
Das Problem das er hat kommt durch die Negierung (~). Lässt man diese Zeile aus, so läuft es Problemlos durch. Wenn ich den Datentyp auf uint32 setze, funktioniert es auch...warum klappt es nicht mit uint8, was mache ich falsch?
Viele Grüße und Dank im vorraus!
Beschreibung: |
|
Download |
Dateiname: |
test.mdl |
Dateigröße: |
27.08 KB |
Heruntergeladen: |
520 mal |
|
|
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 03.02.2011, 11:01
Titel:
|
|
Hallo LosTk,
warum willst du uint8 verwenden wenn du eine negative Zahl bekommst?
Wenn ich das MOdel durchlaufen lasse bekomme ich -11 heraus. uint8 beginnt aber erst bei 0 (http://de.wikipedia.org/wiki/Integer_%28Datentyp%29) und kann die Zahl somit nicht negtaiv darstellen, deswegen wird versucht die Zahl positiv darzustellen mit Hilfe von dem Zweierkomplement glaube ich. (http://de.wikipedia.org/wiki/Zweierkomplement)
Und dabei kommt eine sehr sehr hohe Zahl raus, die du nur mit uint32 darstellen kannst weil dann uint8 nichtmehr ausreicht.
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
LosTk |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 21.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.02.2011, 11:43
Titel:
|
|
Danke für den Hinweis mit dem Zweierkomplement, daran wird es wohl liegen das uint8 nicht ausreicht.
Der Hintergrund ist eigentlich, dass ich keine negative Zahl herausbekommen will sondern lediglich eine Inversion haben will. also aus
00001010 (10) möchte ich mit Hilfe des ~-Operators
11110101 (245) herausbekommen und nicht -11.
Viele Grüßé
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 03.02.2011, 11:56
Titel:
|
|
wenn du bei uint8 bleiben willst kannst du das wie folgt lösen:
oder einfach den Wert von 255 abziehen.
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
LosTk |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 21.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.02.2011, 11:17
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|