Pavel3333 1,148 #344621 Posted August 8, 2016 (edited) В C89 нет такого типа Понял! И рендеринг это очень сложная штука с просчетом всего, что только возможно. Память там явно не под bool отдается, а под кэширование.. Это ясно. Но при рендеринге, когда памяти остается буквально 100-200 МБ, интерфейс 3D-редактора и всё связанное с ним становятся обузой. Была у меня сцена на 1.5 минуты на конкурс к 23 февраля (в котором занял 3-е место, хотя это не важно), и она рендерилась с 12 часов дня до пяти часов утра! При этом я это делал по нескольку раз (не хватало памяти, тогда ее вообще 2 ГБ было, хоть и Макс 32 бита), включая примочки типа кэширования в файл и прочего. Могу еще кое-что рассказать, к примеру, как тогда я возненавидел MPEG формат, но это будет совсем не по теме. Edited August 8, 2016 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344634 Posted August 8, 2016 (edited) del Edited August 8, 2016 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344635 Posted August 8, 2016 (edited) @Pavel3333, бред. Почитайте немного про Си и всё поймете. Edited August 8, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344638 Posted August 8, 2016 Понял. Quote Share this post Link to post Short link Share on other sites
Yupi 505 #344659 Posted August 9, 2016 а совместимостью со старыми компиляторами пренебрегать нельзя. Зависит от задачи) И если это не энтерпрайз для древнего стака, а пользовательский софт для современной среды исполнения, то пренебрегать не только "не нельзя", а даже нужно) Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344707 Posted August 9, 2016 (edited) Зависит от задачи) И если это не энтерпрайз для древнего стака, а пользовательский софт для современной среды исполнения, то пренебрегать не только "не нельзя", а даже нужно)Лол. Назови хоть один компилятор, который может в C11) В C99 тоже не каждый может... Edited August 9, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
Yupi 505 #344711 Posted August 9, 2016 Назови хоть один компилятор, который может в C11 Pelles C может с 2012 года Clang может с 01 Dec 2011 GCC, ICC - частично могут. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344722 Posted August 9, 2016 (edited) Pelles Cчто? Кто-то этим пользовался? Edited August 9, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #344889 Posted August 9, 2016 (edited) В GCC (могу спутать) булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Работа с битами сложнее и медленнее, да и булевы переменные нужны не так часто. Конечные автоматы, ООП и другие полезные штуки минимизируют потребность в булевых переменных. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? Процессор умеет сравнивать лишь целые байты. К счастью, побитовые логические операции он тоже умеет. Псевдокод алгоритма для 01010011: 01010011 AND 10000000 РЕЗУЛЬТАТ СРАВНИТЬ С 10000000 ЕСЛИ РАВНО, ТО TRUE ИНАЧЕ FALSE 01010011 AND 01000000 РЕЗУЛЬТАТ СРАВНИТЬ С 01000000 ЕСЛИ РАВНО, ТО TRUE ИНАЧЕ FALSE 01010011 AND 00100000 РЕЗУЛЬТАТ СРАВНИТЬ С 00100000 ЕСЛИ РАВНО, ТО TRUE ИНАЧЕ FALSE ... Это чтение. Запись предельно проста: 01010011 OR 00000100 = 01010111 01010011 XOR 01000000 = 00010011 Вывод: Это глупо даже в условиях ничтожного количества памяти, так как очень медленно и сложно. Edited August 9, 2016 by Azbuka 1 Quote Share this post Link to post Short link Share on other sites
seriych 2,178 #345590 Posted August 11, 2016 булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Полезный наводящий вопрос по теме: что такое байт? 1 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #345595 Posted August 11, 2016 что такое байт? Байт — единица хранения и обработки цифровой информации; совокупность битов, обрабатываемая компьютером одномоментно Один байт равен восьми битам. Quote Share this post Link to post Short link Share on other sites
Yupi 505 #345599 Posted August 11, 2016 (edited) Байт — единица хранения и обработки цифровой информации; совокупность битов, обрабатываемая компьютером одномоментно Один байт равен восьми битам. @seriych намекал на это: В большинстве вычислительных архитектур байт — это минимальный независимо адресуемый набор данных. Edited August 11, 2016 by TwoPizza 1 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #345600 Posted August 11, 2016 Понял, спасибо. Quote Share this post Link to post Short link Share on other sites
seriych 2,178 #345612 Posted August 11, 2016 намекал на это: намекал на то, что вот это неправильный ответ: Один байт равен восьми битам. Минимально адресуемой областью памяти на компьютере может быть не 8 бит. Соответственно и байт на таком устройстве будет не 8 бит. Ну и исходя из названия "минимально адресуемый" нетрудно догадаться, что и булева переменная тоже будет занимать в памяти не 8 бит, а этот самый не факт что восьмибитный байт. 1 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #345631 Posted August 11, 2016 Понял. Разные компьютеры с разными процессорами (а, значит, разными архитектурами), имеют разный размер одного байта. И потому проще представлять булевую переменную в одном байте. Байт может быть не равен 8 битам. Но почему в школьных учебниках информатики байт приравнивают 8 битам? Это условный идеал? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #345636 Posted August 11, 2016 (edited) struct MyBools { char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; char b8:1; }; Edited May 27, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #345649 Posted August 11, 2016 Запутали, ей-богу. Quote Share this post Link to post Short link Share on other sites
Yupi 505 #345739 Posted August 12, 2016 (edited) В байте 8 бит! @seriych говорит о чем-то схожем с секторами на жестких дисках... Наверное... Нет, он говорит об этом: Однако в истории компьютерной техники существовали решения с иными размерами байта (например, 6, 32 или 36 битов), поэтому иногда в компьютерных стандартах и официальных документах для однозначного обозначения группы из 8 битов используется термин «октет» (лат. octet). В байте не всегда 8 бит, хотя сейчас это стандарт де факто. Edited August 12, 2016 by TwoPizza 1 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #345796 Posted August 12, 2016 Вот теперь все понятно. + Quote Share this post Link to post Short link Share on other sites