.[ ČeskéHry.cz ].
velkost booleanu?
Jdi na stránku 1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
niXon



Založen: 27. 10. 2007
Příspěvky: 22

PříspěvekZaslal: 14. prosinec 2007, 13:33:39    Předmět: velkost booleanu? Odpovědět s citátem

taka otazocka, aka je realna velkost booleanu v C++ ? (bool), som rozmyslal, ze by som mohol spojit osem bolleanov do pola, pretypovat pointer a dostal by som vpodstate jeden byte, ak samozrejme je boolean jeden bit... co vy na to ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tutchek



Založen: 28. 07. 2007
Příspěvky: 140
Bydliště: Praha -Pankrác

PříspěvekZaslal: 14. prosinec 2007, 13:49:31    Předmět: Odpovědět s citátem

imho to bue stoprocentne alespon jeden bajt... vse mensi se hodne debilne adresuje
_________________
Nemarni čas u kompu, pojď si zaběhat do lesa

function god_exists() { return false; }
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
(CZ)genius



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: Neratovice

PříspěvekZaslal: 14. prosinec 2007, 13:50:41    Předmět: Odpovědět s citátem

Podle me to takhle dost dobre fungovat nemuze (tezko se adresuje bit)..

nekde sem ale videl, ze struct {bool a; char b; bool c;} by zabral 3 bajty, kdezto struct {char b; bool a; bool c;} nejakym zazracnym zpusobem jenom 2... jeste jsem to nezkousel, ale docela by me zajimalo jak (jestli) to funguje..

EDIT: opet jsem byl pomaly..


Naposledy upravil (CZ)genius dne 15. prosinec 2007, 10:50:45, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 14. prosinec 2007, 14:26:15    Předmět: Re: velkost booleanu? Odpovědět s citátem

niXon napsal:
taka otazocka, aka je realna velkost booleanu v C++ ? (bool), som rozmyslal, ze by som mohol spojit osem bolleanov do pola, pretypovat pointer a dostal by som vpodstate jeden byte, ak samozrejme je boolean jeden bit... co vy na to ?


pokud nutne potrebujes ulozit true/false na co nejmene mist pouzij bitovou "adresaci" pomoci bitovych soucinu a tim padem zvladnes ulozit 8 0/1 hodnot do jednoho bytu

kód:

10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chjoodge



Založen: 30. 07. 2007
Příspěvky: 145

PříspěvekZaslal: 14. prosinec 2007, 14:54:58    Předmět: Re: velkost booleanu? Odpovědět s citátem

niXon napsal:
taka otazocka, aka je realna velkost booleanu v C++ ?

Afaik není ve standardech definovaná. Většinou to ale asi bude jeden byte.

niXon napsal:
som rozmyslal, ze by som mohol spojit osem bolleanov do pola, pretypovat pointer a dostal by som vpodstate jeden byte, ak samozrejme je boolean jeden bit... co vy na to ?

Tohle můžeš udělat, jak píše řezňa... máš cokoliv jednobytového, třeba byte Smile, a přistupuješ k bitům pomocí bitových masek.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
DespeRadoX



Založen: 28. 07. 2007
Příspěvky: 520

PříspěvekZaslal: 14. prosinec 2007, 15:06:00    Předmět: Odpovědět s citátem

2niXon: rozmyslas spravne, urobit to mozes a dokonca to je (alebo aspon bola) dost casto pouzivana vec (z narastajucim priestorom a rychlostou cpu to zacina stracat na vyzname), naopak ak chces niekoho nasrat zadefinuj si kazdu logicku co pouzijes ako string a vkladaj tam do toho 'True' a 'False' Smile
_________________
http://www.touchgames.eu/
http://playito.com
TW: @Despo100
Space Merchants Online ...zruseny, pracujem na mobilnej verzii space merchantu
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Yossarian



Založen: 28. 07. 2007
Příspěvky: 274
Bydliště: Šalingrad

PříspěvekZaslal: 14. prosinec 2007, 15:28:07    Předmět: Odpovědět s citátem

bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite Smile
jinak
kód:

struct {
 int a : 3;
 int b : 5;
};

by melo zabirat 1 byte
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 14. prosinec 2007, 15:51:37    Předmět: Odpovědět s citátem

Yossarian napsal:
bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite Smile


tam je to ale jiny bool

niXon chce Cckovy bool a ty mluvis o VARIANT_BOOL definovanem v COM API, kde VARIANT_TRUE == -1 a VARIANT_FALSE == 0 protoze to je zapsano v bitechc VARIANT_TRUE == 11111111 a VARIANT_FALSE == 00000000 a je to tak proto, ze VB nerozlisuje binarni a bitovy operator Not. Ve VB je za True uznano cokoliv != 0 (tedy od False), coz prinasi problem kdyz si neopatrne z C++ posles Boolean jako 1, protoze jeho Not je 11111110 coz znamena ze ackoliv A je true tak Not A je porad True - v tomto pripade je Not totiz bitovy.

a druha vec int neni 4 byte. nebot sizeof(short) <= sizeof(int) <= sizeof(long) kde nikde neni receno jak dlouhy je nektery z techto 3 typu

nutne 4 bytovy je __int32, DWORD nebo int32_t (pokud si spravne pamatuju ten treti pro gcc), prvni je M$ specific a druhy je definovan ve WinAPI a nerika toto je int ale toto je nutne dvoj-slovo
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 14. prosinec 2007, 16:23:43    Předmět: Odpovědět s citátem

No zrobna nedavno jsem delal PInvoke (volal jsem C++ funkci z .NETu) a na bool si je tam treba davat pozor. Je treba si atributy (MarshalAs ..) urcit o jaky bool jde (win BOOL ma 4 byty jako int, VARIANT_BOOL ma imho 2 a C++ bool 1 Byte)

A kdo si mysli ze mu kecam necht pouzije size_of! Wink
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Chjoodge



Založen: 30. 07. 2007
Příspěvky: 145

PříspěvekZaslal: 14. prosinec 2007, 16:39:28    Předmět: Odpovědět s citátem

rezna napsal:
(...) coz prinasi problem kdyz si neopatrne z C++ posles Boolean jako 1, protoze jeho Not je 11111110 coz znamena ze ackoliv A je true tak Not A je porad True - v tomto pripade je Not totiz bitovy.

LoL Smile Už ani (not True) != True nemá člověk jistý Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 14. prosinec 2007, 17:34:21    Předmět: Odpovědět s citátem

Chjoodge napsal:
rezna napsal:
(...) coz prinasi problem kdyz si neopatrne z C++ posles Boolean jako 1, protoze jeho Not je 11111110 coz znamena ze ackoliv A je true tak Not A je porad True - v tomto pripade je Not totiz bitovy.

LoL Smile Už ani (not True) != True nemá člověk jistý Smile


no LOL to neni kdyz zjistujes kde pica je problem a pak zjistis ze existuje VARIANT_TRUE a VARIANT_FALSE ktere mas spravne vracet Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Pavel



Založen: 29. 07. 2007
Příspěvky: 54
Bydliště: Litovel

PříspěvekZaslal: 14. prosinec 2007, 18:47:12    Předmět: Odpovědět s citátem

Yossarian napsal:
bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite Smile
jinak
kód:

struct {
 int a : 3;
 int b : 5;
};

by melo zabirat 1 byte

IMHO 4 byte - zarovna se to do velikosti INTu - tady bude asi 24 bitu neadresovatelnych.

(pro zacatecniky)
Jinak podle me je lepsi se bitovym polim a celkove temhle "nizkym" operacim vyhybat. Drahy neni cas pocitace, ale nas.Smile


Naposledy upravil Pavel dne 10. květen 2008, 19:47:35, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ondy1985



Založen: 28. 07. 2007
Příspěvky: 361

PříspěvekZaslal: 14. prosinec 2007, 22:17:21    Předmět: Odpovědět s citátem

(CZ)genius napsal:

nekde sem ale videl, ze struct {bool a; char b; bool c;} by zabral 3 bajty, kdezto struct {char b; bool a; bool c;} nejakym zazracnym zpusobem jenom 3...


no tak na tom podla mna neni nic zvlastne Very Happy


Naposledy upravil ondy1985 dne 15. prosinec 2007, 01:03:44, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Yossarian



Založen: 28. 07. 2007
Příspěvky: 274
Bydliště: Šalingrad

PříspěvekZaslal: 14. prosinec 2007, 22:59:51    Předmět: Odpovědět s citátem

rezna> ja vim ze int neni presne definovanej. ale bral sem v potaz pripad ktery je vicemene nejrozsirenejsi.. mozna sem to tam mel uvest. Smile

Pavel> no, zarovnani do 4b se da vypnout, minimalne v ms kompilatoru pomoci
#pragma pack (1)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
(CZ)genius



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: Neratovice

PříspěvekZaslal: 15. prosinec 2007, 10:51:15    Předmět: Odpovědět s citátem

ondy1985 napsal:
no tak na tom podla mna neni nic zvlastne Very Happy


opraveno Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna