Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
niXon
Založen: 27. 10. 2007 Příspěvky: 22
|
Zaslal: 14. prosinec 2007, 13:33:39 Předmět: velkost booleanu? |
|
|
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 |
|
|
Tutchek
Založen: 28. 07. 2007 Příspěvky: 140 Bydliště: Praha -Pankrác
|
Zaslal: 14. prosinec 2007, 13:49:31 Předmět: |
|
|
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 |
|
|
(CZ)genius
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: Neratovice
|
Zaslal: 14. prosinec 2007, 13:50:41 Předmět: |
|
|
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 |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 14. prosinec 2007, 14:26:15 Předmět: Re: velkost booleanu? |
|
|
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 |
|
|
Chjoodge
Založen: 30. 07. 2007 Příspěvky: 145
|
Zaslal: 14. prosinec 2007, 14:54:58 Předmět: Re: velkost booleanu? |
|
|
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 , a přistupuješ k bitům pomocí bitových masek. |
|
Návrat nahoru |
|
|
DespeRadoX
Založen: 28. 07. 2007 Příspěvky: 520
|
Zaslal: 14. prosinec 2007, 15:06:00 Předmět: |
|
|
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' _________________ http://www.touchgames.eu/
http://playito.com
TW: @Despo100
Space Merchants Online ...zruseny, pracujem na mobilnej verzii space merchantu |
|
Návrat nahoru |
|
|
Yossarian
Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 14. prosinec 2007, 15:28:07 Předmět: |
|
|
bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite
jinak
kód: |
struct {
int a : 3;
int b : 5;
};
|
by melo zabirat 1 byte |
|
Návrat nahoru |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 14. prosinec 2007, 15:51:37 Předmět: |
|
|
Yossarian napsal: |
bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite |
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 |
|
|
MD
Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 14. prosinec 2007, 16:23:43 Předmět: |
|
|
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! _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
|
Chjoodge
Založen: 30. 07. 2007 Příspěvky: 145
|
Zaslal: 14. prosinec 2007, 16:39:28 Předmět: |
|
|
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 Už ani (not True) != True nemá člověk jistý |
|
Návrat nahoru |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 14. prosinec 2007, 17:34:21 Předmět: |
|
|
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 Už ani (not True) != True nemá člověk jistý |
no LOL to neni kdyz zjistujes kde pica je problem a pak zjistis ze existuje VARIANT_TRUE a VARIANT_FALSE ktere mas spravne vracet |
|
Návrat nahoru |
|
|
Pavel
Založen: 29. 07. 2007 Příspěvky: 54 Bydliště: Litovel
|
Zaslal: 14. prosinec 2007, 18:47:12 Předmět: |
|
|
Yossarian napsal: |
bool je podle me ekvivalentni s int, tudiz 4bajtovej. aspon ve VB urcite
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.
Naposledy upravil Pavel dne 10. květen 2008, 19:47:35, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
ondy1985
Založen: 28. 07. 2007 Příspěvky: 361
|
Zaslal: 14. prosinec 2007, 22:17:21 Předmět: |
|
|
(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
Naposledy upravil ondy1985 dne 15. prosinec 2007, 01:03:44, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
Yossarian
Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 14. prosinec 2007, 22:59:51 Předmět: |
|
|
rezna> ja vim ze int neni presne definovanej. ale bral sem v potaz pripad ktery je vicemene nejrozsirenejsi.. mozna sem to tam mel uvest.
Pavel> no, zarovnani do 4b se da vypnout, minimalne v ms kompilatoru pomoci
#pragma pack (1) |
|
Návrat nahoru |
|
|
(CZ)genius
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: Neratovice
|
Zaslal: 15. prosinec 2007, 10:51:15 Předmět: |
|
|
ondy1985 napsal: |
no tak na tom podla mna neni nic zvlastne |
opraveno |
|
Návrat nahoru |
|
|
|