INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

2er Kompliment 12bit fix-point integer



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.11.2015, 10:59 (Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2015 15:52 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: 2er Kompliment 12bit fix-point integer
(24.11.2015 10:42 )Slev1n schrieb:  3, Falls das MSByte > 0x7F ist (z.B. 0x80 = 1000 0000b) bekomme ich einen "sehr" negativen Wert. Aber macht das Sinn?
Anwendung des 2er Komplements: Alle Stellen invertieren und +1
0x80 = 1000 0000b ---> 0111 1111b + 0000 0001b = 1000 0000b --> maximal negativer Wert (Insofern LSByte = 0)
0x81 = 1000 0001b ---> 0111 1110b + 0000 0001b = 0111 1111b --> "weniger" negativer Wert
Das ist alles richtig

0111 1111 1111 1111 = 7FFF = 32767 (größte positive Zahl)
0000 0000 0000 0001 = 0001 = 1
0000 0000 0000 0000 = 0000 = 0
1111 1111 1111 1111 = FFFF =-1
1000 0000 0000 0000 = 8000 = -32768 (größte negative Zahl)

Ist doch ganz einfach: Wenn bei einem mechanischem oder elektronischem Rechenwerk 0000000 eingestellt ist und ich subtrahiere fortlaufend 1, dann fängt es wieder von ganz oben an und zählt dann rückwärts. Weil das so schön computergerecht ist, hat man es so genormt.

Für nicht genormte 12bit Integer gilt entsprechend:
0111 1111 1111 = 7FF = 2047 (größte positive Zahl)
0000 0000 0001 = 001 = 1
0000 0000 0000 = 000 = 0
1111 1111 1111 = FFF =-1
1000 0000 0000 = 800 =-2048 (größte negative Zahl)

Dein darstellbarer Temperaturbereich ist: -128.00°C .. +127.94°C. Die Temperaturdifferenz zwischen den Digits ist 1/16 °C. Von daher ist es sinnvoll, die Temperatur nur mit einer Nachkommastelle anzuzeigen und nicht, wie ich es gemacht habe, mit zwei.

Noch etwas:
Zitat:1, MSByte und LSByte füge ich mit der "join" funktion zusammen zu einem U16 Wert, der dann zu I16 umgewandelt wird, da es ja ein vorzeichenbehafteter Wert sein kann
.
Richtig, aber das ist nicht die einzige Möglichkeit. Wenn z.B. die beiden Bytes als Array vorliegen, dann kann man die 16bit Integer auch mittels Typumwandlung erzeugen.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: 2er Kompliment 12bit fix-point integer - Lucki - 24.11.2015 10:59

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  16bit Integer über Uart schicken floH857 2 3.666 10.01.2017 17:11
Letzter Beitrag: floH857
  16 Bit in Integer umwandeln Ingo2 6 7.122 02.12.2015 18:09
Letzter Beitrag: IchSelbst
  String zu Dezimal (1, 2 und 4 Byte) unsigned + Integer hansi9990 9 7.095 16.07.2015 14:25
Letzter Beitrag: hansi9990
  Tabelle Integer und Double Werte DA-LabVIEW 1 3.996 25.02.2015 20:36
Letzter Beitrag: GerdW
  Listenfeldauswahl und Ausgabe als Integer RoboBurger 4 4.281 25.03.2014 10:32
Letzter Beitrag: RoboBurger
  12Bit als RGB joedoe1979 1 3.501 26.08.2012 09:39
Letzter Beitrag: Kasi

Gehe zu: