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

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

1

20.04.2009, 20:36

Bool nur 1 Bit?

Hi,
ich wollte mal fragen ob der Typ Bool eigentlich nur ein Bit Speicher benutzt? Denn eigentlich kann der Computer ja nicht nur 1 Bit "machen". Immer nur ein Byte. Und dann wollte ich mal fragen, falls es auch ein Byte verbraucht, ob man das irgendwie ändern kann, wie z.B. mit nem Array aus Bool-Variabeln? :?:
MfG

VuuRWerK

Frischling

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

20.04.2009, 20:42

Die meisten Compiler sollten bool als 1-Bit umsetzen aber es belegt dennoch 1Byte. Wenn Du ein Bit-Array brauchst dann nimm std::vector<bool>, dafür gibt es eine spezielle Implementierung (sollte zumindestens jeder Compilerhersteller mitbringen).

Gut Schuß
VuuRWerK ;)

Edit: Sry Satz war noch nicht beendet :/
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

3

20.04.2009, 20:42

Re: Bool nur 1 Bit?

Zitat von »"Duji-Buji"«

ich wollte mal fragen ob der Typ Bool eigentlich nur ein Bit Speicher benutzt?

In den üblichen höheren Programmiersprachen jedenfalls nicht.

Kannst Bit-Fields benutzen, um es zu "ändern".
<< an dieser Stelle ist eine Signatur verstorben >>

Anonymous

unregistriert

4

20.04.2009, 20:43

Die kleinste Einheit die man reservieren kann ist 1 Byte. Also ist bool auch 1 Byte groß. Es kann zwar nur den Zustand von 1 Bit speichern, aber das bedeutet nicht, dass es nur 1 Bit groß ist.

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

5

20.04.2009, 20:46

Sowas müsste doch funktionieren, oder?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
struct AchtBooleansZuJeEinemBit
{
  bool b1 : 1;
  bool b2 : 1;
  bool b3 : 1;
  bool b4 : 1;
  bool b5 : 1;
  bool b6 : 1;
  bool b7 : 1;
  bool b8 : 1;
};


Ein sizeof(AchtBooleansZuJeEinemBit) müsste doch 1 liefern.
<< an dieser Stelle ist eine Signatur verstorben >>

VuuRWerK

Frischling

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.04.2009, 20:58

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>

typedef struct bit8_t
{
  bool bit1 : 1;
  bool bit2 : 1;
  bool bit3 : 1;
  bool bit4 : 1;
  bool bit5 : 1;
  bool bit6 : 1;
  bool bit7 : 1;
  bool bit8 : 1;
} bit8;

int main(int argc, char* argv[])
{
  std::cout << "size of bool: " << sizeof(bool) << std::endl;
  std::cout << "size of bit8: " << sizeof(bit8) << std::endl;
  return 0;
}


Liefert beides 1 (kompiliert mit g++).

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

7

20.04.2009, 20:59

meiner meinung nach passen keine 9 bit in 1 byte :D aber was genau der compiler daraus macht, weiß ich nicht, warum testest du es nicht einfach :D

VuuRWerK

Frischling

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

8

20.04.2009, 21:00

Zitat von »"n0_0ne"«

meiner meinung nach passen keine 9 bit in 1 byte :D aber was genau der compiler daraus macht, weiß ich nicht, warum testest du es nicht einfach :D


Bei 0 anfangen mit zählen nur bei arrays ;)

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

9

20.04.2009, 21:02

Zitat von »"VuuRWerK"«

Zitat von »"n0_0ne"«

meiner meinung nach passen keine 9 bit in 1 byte :D aber was genau der compiler daraus macht, weiß ich nicht, warum testest du es nicht einfach :D


Bei 0 anfangen mit zählen nur bei arrays ;)

Gut Schuß
VuuRWerK ;)

oh tatsächlich sry, hab nur die 8 gesehen und gleich +1 gerechnet ;)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

10

20.04.2009, 21:48

Zitat von »"n0_0ne"«

Zitat von »"VuuRWerK"«

Zitat von »"n0_0ne"«

meiner meinung nach passen keine 9 bit in 1 byte :D aber was genau der compiler daraus macht, weiß ich nicht, warum testest du es nicht einfach :D


Bei 0 anfangen mit zählen nur bei arrays ;)

Gut Schuß
VuuRWerK ;)

oh tatsächlich sry, hab nur die 8 gesehen und gleich +1 gerechnet ;)


Programmierersyndrom ;)

Werbeanzeige