Pavel3333 Posted August 8, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 (edited) del Edited August 8, 2016 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 8, 2016 Share Posted August 8, 2016 (edited) @Pavel3333, бред. Почитайте немного про Си и всё поймете. Edited August 8, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 Понял. @ Quote Link to comment Short link Share on other sites More sharing options...
Yupi Posted August 9, 2016 Share Posted August 9, 2016 а совместимостью со старыми компиляторами пренебрегать нельзя. Зависит от задачи) И если это не энтерпрайз для древнего стака, а пользовательский софт для современной среды исполнения, то пренебрегать не только "не нельзя", а даже нужно) @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 9, 2016 Share Posted August 9, 2016 (edited) Зависит от задачи) И если это не энтерпрайз для древнего стака, а пользовательский софт для современной среды исполнения, то пренебрегать не только "не нельзя", а даже нужно)Лол. Назови хоть один компилятор, который может в C11) В C99 тоже не каждый может... Edited August 9, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
Yupi Posted August 9, 2016 Share Posted August 9, 2016 Назови хоть один компилятор, который может в C11 Pelles C может с 2012 года Clang может с 01 Dec 2011 GCC, ICC - частично могут. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 9, 2016 Share Posted August 9, 2016 (edited) Pelles Cчто? Кто-то этим пользовался? Edited August 9, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted August 9, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
seriych Posted August 11, 2016 Share Posted August 11, 2016 булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Полезный наводящий вопрос по теме: что такое байт? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 11, 2016 Author Share Posted August 11, 2016 что такое байт? Байт — единица хранения и обработки цифровой информации; совокупность битов, обрабатываемая компьютером одномоментно Один байт равен восьми битам. @ Quote Link to comment Short link Share on other sites More sharing options...
Yupi Posted August 11, 2016 Share Posted August 11, 2016 (edited) Байт — единица хранения и обработки цифровой информации; совокупность битов, обрабатываемая компьютером одномоментно Один байт равен восьми битам. @seriych намекал на это: В большинстве вычислительных архитектур байт — это минимальный независимо адресуемый набор данных. Edited August 11, 2016 by TwoPizza 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 11, 2016 Author Share Posted August 11, 2016 Понял, спасибо. @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted August 11, 2016 Share Posted August 11, 2016 намекал на это: намекал на то, что вот это неправильный ответ: Один байт равен восьми битам. Минимально адресуемой областью памяти на компьютере может быть не 8 бит. Соответственно и байт на таком устройстве будет не 8 бит. Ну и исходя из названия "минимально адресуемый" нетрудно догадаться, что и булева переменная тоже будет занимать в памяти не 8 бит, а этот самый не факт что восьмибитный байт. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 11, 2016 Author Share Posted August 11, 2016 Понял. Разные компьютеры с разными процессорами (а, значит, разными архитектурами), имеют разный размер одного байта. И потому проще представлять булевую переменную в одном байте. Байт может быть не равен 8 битам. Но почему в школьных учебниках информатики байт приравнивают 8 битам? Это условный идеал? @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 11, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 11, 2016 Author Share Posted August 11, 2016 Запутали, ей-богу. @ Quote Link to comment Short link Share on other sites More sharing options...
Yupi Posted August 12, 2016 Share Posted August 12, 2016 (edited) В байте 8 бит! @seriych говорит о чем-то схожем с секторами на жестких дисках... Наверное... Нет, он говорит об этом: Однако в истории компьютерной техники существовали решения с иными размерами байта (например, 6, 32 или 36 битов), поэтому иногда в компьютерных стандартах и официальных документах для однозначного обозначения группы из 8 битов используется термин «октет» (лат. octet). В байте не всегда 8 бит, хотя сейчас это стандарт де факто. Edited August 12, 2016 by TwoPizza 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 12, 2016 Author Share Posted August 12, 2016 Вот теперь все понятно. + @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.