Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.06.2012, 13:22

Fragen zu C++ (Rund um Bits)

Hallo liebe Community!
Habe mir gestern das Buch "Der C++ Programmierer" gekauft/bestellt. Nachdem Lesen erster Seiten bin ich zum Thema ganze/reelle Zahlen.. angekommen.
Hauptsächlich ist die Rede von Bits.
Über Bits weiß ich nur das hier:
1Byte = 8Bits
Datentypen haben abhängig vom Rechner 2-8Bytes(oder sogar mehr).
1Bit ist vorreserviert fürs Vorzeichen, außer bei unsigned Datentypen.(8Bits für die Zahlen -> 1Byte z.B. char)
---------------------------------------------------------------------------------------------------------------------------
Ich wäre darüber erfreut, wenn mir jemand von euch folgendes, wie für Dummys(scheine wohl einer zu sein) erklärt:
Was ist eine Mantisse?
Was ist ein Bitfeld?
Was machen die Bitoperatoren &, | ?


Achja und:
Wieso ist eine Ziffer als ZEICHEN subtrahiert mit '0', die gleiche Zahl in INT (int 1 = '1'-'0'), wenn laut dieser Tabelle: http://www.torsten-horn.de/techdocs/ascii.htm
die Ziffern in der ASCII-Tabelle erst bei 48dezimal(0) anfangen?

lg. denniro

Ich hoffe, dass ihr verstanden habt, was ich meine ;)

EDIT: Letzte Frage gelöst
Only God can judge me.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »denniro« (28.06.2012, 13:33)


Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

28.06.2012, 13:30

Zum letzten: Weil die '0' zwar die 48 ist, die '1' aber gleich darauf die 49. Und 49 - 48 ist dann als Zahl 1. ;)
Wären die Ziffern anders angeordnet würde das nicht funktionieren.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

3

28.06.2012, 13:32

Ach so ist das :D
Danke für deine Antwort.
Eigentlich müsste ich ja selbst drauf kommen, war/ist ja nicht so schwer.
Immer diese Blockade...

lg. denniro
Only God can judge me.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

4

28.06.2012, 13:39

Ein Beispiel für das Bitweise &:
Du hast zwei Bytes 11110000 und 10101010. Dann kommt da 1010000 raus. Weil der beide Bytes Bit für Bit durchgeht und guckt wo an dieser Position bei beiden Bytes das Bit auf True steht. Nur dann wird es auch im Ergebnis true sein. Das | ist da etwas anders. Da reicht es wenn in einem der beiden Bytes ein Bit auf True steht.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

5

28.06.2012, 13:44

Ein Beispiel für das Bitweise &:
Du hast zwei Bytes 11110000 und 10101010. Dann kommt da 1010000 raus. Weil der beide Bytes Bit für Bit durchgeht und guckt wo an dieser Position bei beiden Bytes das Bit auf True steht. Nur dann wird es auch im Ergebnis true sein. Das | ist da etwas anders. Da reicht es wenn in einem der beiden Bytes ein Bit auf True steht.

Ah okey das heißt, dass wenn ich sowas hab:
Und
1010 1111 &
0101 0010
------------
0000 0010


Oder
1010 1111 |
0101 0010
-------------
1111 1111


Danke für deine Antwort!

lg. denniro
Only God can judge me.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

28.06.2012, 13:49

Wie ich mir früher UND und ODER gemerkt hab:
UND ist eine Multiplikation => 1*0 = 0 ; 1*1 = 1
ODER ist ein Plus => 1+0 = 1; 1+1 = 2 (da es keine zwei gibt => 1)

7

28.06.2012, 13:50

Ist das hier denn richtig:

Char '0':

Dezimal 48

48:2 = 24 Rest: 0
24:2 = 12 Rest: 0
12:2 = 6 Rest: 0
6:2 = 3 Rest: 0
3:2 = 1 Rest: 1
1:2 = 0 Rest: 1

Also binär: 0011 0000

Stimmt meine Rechnung?

lg. denniro
Only God can judge me.

8

28.06.2012, 13:51

Wie ich mir früher UND und ODER gemerkt hab:
UND ist eine Multiplikation => 1*0 = 0 ; 1*1 = 1
ODER ist ein Plus => 1+0 = 1; 1+1 = 2 (da es keine zwei gibt => 1)


Netter Tip, danke dir ;)

lg. denniro
Only God can judge me.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

9

28.06.2012, 13:51

Ja. Kannst auch ganz einfach die Probe machen:

Von rechts nach links steht jedes Bit für eine 2^n

Also das Bit ganz rechts steht für 2^0 = 1, das daneben für 2^1 = 2, usw.

Zum zurückrechnen einfach die Werte addieren. In deinem Beispiel also 32+16 = 48

10

28.06.2012, 14:01

Ja. Kannst auch ganz einfach die Probe machen:

Von rechts nach links steht jedes Bit für eine 2^n

Also das Bit ganz rechts steht für 2^0 = 1, das daneben für 2^1 = 2, usw.

Zum zurückrechnen einfach die Werte addieren. In deinem Beispiel also 32+16 = 48


Also wenn du das Bit ein Stream fliest(1):
32 = 2^5 + 16 = 2^4
Ansonsten bei keinem Stream(0):
weglassen, da sich z.B. 32*0 aufhebt
-----------------------------------------------
Beim Dezimal-System ist es also so:
Zahl*10^n
und beim Hexa:
Zahl/Buchstabe*16^n oder wie? :D

Ich denke, dass ich es ganz gut verstanden habe.
Jetzt fehlt nur noch dieses komische Bitfeld ;)

Danke für eure Hilfe

lg. denniro
Only God can judge me.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »denniro« (28.06.2012, 14:08)


Werbeanzeige