IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа с битами
sheka
сообщение 7.07.2011 14:07
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Хочется видите ли с битами работать. Но даже в тот же Longint они не влазят.
Вот такой маразм не прокатывает:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
p: pointer;
pSize: integer;
i: integer;

begin
pSize := SizeOf(longint)*8+1;
WriteLn(pSize);
GetMem(p,pSize);
FillChar(p^,pSize,0);
Integer(p^) := 4294967296;
for i := pSize-1 downto 0 do
Write((Integer(p^) shr i)and $1);
WriteLn;
FreeMem(p,pSize);
readln;
end.

Объявлять массив Байтов и делать перегрузку +- не интересно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 9.07.2011 22:43
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
SizeOf выдает 4байта
Ты опять совершаешь ту же самую ошибку. Пойми, что на SizeOf нельзя полагаться, он будет выдавать разные значения в зависимости от
1) режима, в котором происходит компиляция;
2) использования настроек компилятора или директив.

В частности, на размер типа-перечисления влияет использование директивы $PACKENUM (минимальное количество байт, используемое для хранения перечислимых типов) : в режиме совместимости с Дельфи и ТП по умолчанию принимается {$PACKENUM 1}, в режиме MacPas - {$PACKENUM 2}, в остальных режимах - 4 байта...

Да, максимально теперь поддерживается 232 элементов перечисления (значения хранятся как Byte/Word/Longword в зависимости от количества элементов, и от установленного значения PACKENUM, об этом можно почитать в файле prog.pdf: "8.2.4 Enumeration types")

Цитата
Интервальный тип округляется к большему целому кол-ву байт, но не больше 8ми?
Угу. Ибо самый емкий целочисленный тип имеет размер в 8 байт (Int64 или QWord), больше нет смысла выделять под интервал, границы интервала всегда целочисленные (емкость всех остальных перечислимых типов типов все равно меньше, так что их здесь не принимаем во внимание)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   Работа с битами   7.07.2011 14:07
IUnknown   Ну, с таким-то значением ничего перегружать не над...   7.07.2011 14:18
sheka   Ну 512бит это уже лучше, но все равно не много :) ...   7.07.2011 15:32
IUnknown   512 бит - это 64 байта, а тип Int64 - это 64 бита....   7.07.2011 16:14
sheka   Что-то я лишний раз на 8 умножил (логарифм от того...   7.07.2011 22:22
IUnknown   Не будет. Либо тебе очень повезло и ты натолкнулся...   8.07.2011 14:01
sheka   Не ожидал. Совсем не ожидал. А почему Boolean зани...   8.07.2011 23:01
Lapp   Не ожидал. Совсем не ожидал. А почему Boolean зани...   8.07.2011 23:29
sheka   Да это понятно, что sizeof все прекрасно выдает, т...   8.07.2011 23:38
IUnknown   Стоп... Похоже, FPC умеет-таки упаковывать биты (в...   8.07.2011 23:38
Lapp   Идеология кого?Программирования. Компьютера. Ну ...   8.07.2011 23:51
sheka   Стремный метод однако. Лучше ничего нет? Дык полу...   8.07.2011 23:59
Lapp   Дык получается, что первые 7 бит booleana - вечные...   9.07.2011 0:09
IUnknown   Кто тебе сказал, что Boolean - это только 0 и 1? Н...   9.07.2011 0:09
Lapp   Кроме прочего, если заводишь boolean переменную ди...   9.07.2011 0:15
sheka   Делфи на такую штуку иероглифы выводит. Не нравитс...   9.07.2011 0:18
Lapp   Ну как бы в Си такое же понятие True и False, и им...   9.07.2011 0:50
IUnknown   Я б не рекомендовал тебе заниматься подобными извр...   9.07.2011 12:56
sheka   Расскажите о перечислениях более подробно: их пре...   9.07.2011 21:42
IUnknown   Ты опять совершаешь ту же самую ошибку. Пойми, что...   9.07.2011 22:43


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.07.2025 23:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"