Jump to content
Korean Random

Почему булевая переменная в реальности равна 1 байту, а не 1 биту?


Recommended Posts

В GCC (могу спутать) булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Это в ВОСЕМЬ РАЗ больше достаточного! При большом наборе таких булей будут огромные растраты памяти! Почему???

Edited by Pavel3333
Link to comment
Short link
Share on other sites

Минимальная адресация процессора 1 байт, максимальная 4(x86), либо 8(x86_64) байт. За эти границы вылезти можно только костылями, например vector<bool> использует один bool как один бит

  • Upvote 2
Link to comment
Short link
Share on other sites

 

 

Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать?
, это уже как программист пожелает. 

P.S. ИМХО, бесполезная трата ресурсов процессора.

Link to comment
Short link
Share on other sites

Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать?

vector<bool> так и делает :heh: Подробности в гугле

Link to comment
Short link
Share on other sites

Спасибо, почитаю! :-)


ИМХО, бесполезная трата ресурсов процессора.

А моё ИМХО - полезное использование ресурсов оперативки :heh:

ИМХО, для проца без разницы, к битам или к байтам обращаться.

Link to comment
Short link
Share on other sites

 

 

А моё ИМХО - полезное использование ресурсов оперативки
, сколько же у вас логических переменных?

 

 

ИМХО, для проца без разницы, к битам или к байтам обращаться

Выравнивание данных. 

Link to comment
Short link
Share on other sites

, сколько же у вас логических переменных?

В моих программах их не так много - от нуля до одиннадцати.

 

Понял, был не прав. Оперативка может будет расходоваться чуть больше, но зато ничего тормозить не будет.

Link to comment
Short link
Share on other sites

, и вы хотели сэкономить 9 байт? Это явно перебор.

Себя я в пример не беру. Хотя, оптимизация и впрямь 

 

бесполезная
, так как если будет 100500 переменных, то их вес будет 98,15 кБ. Лучше уж позаботиться об оптимизации изображений. Они занимают в десятки и сотни раз больше места.
Link to comment
Short link
Share on other sites

 

 

1 БАЙТ, а не бит
это ты шутишь надеюсь? сколько оперативы в твоей машине? и какую же мегасофтину ты сваял, что бы уничтожить память?
4 гига имеющихся в калькуляторе слабо засрать будет то :heh:  
Link to comment
Short link
Share on other sites

сколько оперативы в твоей машине?

На ноуте - 3 ГБ. На компьютере - 4 ГБ.

 

4 гига имеющихся в калькуляторе слабо засрать будет то

НИВАЗМОЖНА СЛОЖНА засрать так 4 ГБ. Я состарюсь пока окончательно засорю бульками свою оперативку)

 

и какую же мегасофтину ты сваял, что бы уничтожить память?

Пока что никакую, просто задумался, что если прога типа 3D Макса носит много (действительно много!) булевых переменных, то почему не могли сократить размер каждой до бита. Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так.

Edited by Pavel3333
Link to comment
Short link
Share on other sites

Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так.

И рендеринг это очень сложная штука с просчетом всего, что только возможно. Память там явно не под bool отдается, а под кэширование..
Edited by SkepticalFox
Link to comment
Short link
Share on other sites

Кстати, bool в Си полный отстой. Лучше использовать char.

Почему? Можно ссылочку?

'По ссылке Ноглого Котэ'

post-18657-0-39348000-1470692373_thumb.png

Так-то они практически ни чем не отличаются. Разве что типом - логическим и символьным.

Edited by Pavel3333
  • Downvote 1
Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...