Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

Организация множества   Найти похожие ветки 

 
CMOS ©   (2007-07-21 08:59) [0]

Не могу понять как организовано множество. Весит оно всего лишь 32 байта (выведите его в файл), а содержит 256 элементов. Ни в каком другом языке подобного нет. Но множество работает только с числами от 0 до 255. А для слов приходится использовать массив и проверять вхождение числа поэлементно, что существенно дольше.
Нашел кое-что по своему вопросу:

var a: Array[0..124] of Byte;
   x: Word;
begin
x:= 1000;
a[x shr 3]:=a[x shr 3] or (1 shl (x and 7));
if (a[x shr 3] and (1 shl (x and 7)))<>0 then Write("Yes") else Write("No");
Readln;
end.

Там ничего не объяснялось. Просто говорилось, что для числа 1000 нужен массив на 125 элементов.
Интересно, но это работает и с массивом на 100 и на 32. С числами 1000 и 10000.
Помогите разобраться в этом коде.


 
Virgo_Style ©   (2007-07-21 09:05) [1]

CMOS ©   (21.07.07 8:59)
Весит оно всего лишь 32 байта (выведите его в файл), а содержит 256 элементов.


32 * 8 = 256

Читать про байты и биты, и про операции с последними.


 
Anatoly Podgoretsky ©   (2007-07-21 11:44) [2]

Класс TBits


 
Юрий Зотов ©   (2007-07-21 14:16) [3]

> CMOS ©   (21.07.07 08:59)

32 байта - это 256 бит. Они пронумерованы от 0 (младший) до 255 (старший). Элементы множества упорядочены (т.е., тоже пронумерованы), поэтому каждому элементу множества соответствует свой бит. Если этот бит равен 1, то соответствующий ему элемент ВХОДИТ во множество, если нулю - НЕ входит. Вот и вся кухня.

PS
Именно по этой причине:

а). множество может быть составлено ТОЛЬКО из элементов, поддающихся упорядочиванию (то есть, принадлежащих семейству Ordinal types);

б). количество элементов во множестве (мощность множества) не может превышать 256 (поскольку максимальный размер множества - 32 байта);

в). если численное значение элемента множества задается явно, то оно должно лежать в диапазоне от 0 до 255 и не может повторяться в других элементах множества.


 
CMOS ©   (2007-07-24 07:16) [4]

Все ясно, всем спасибо



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.047 c
2-1185358225
ari_9
2007-07-25 14:10
2007.08.19
FIBPlus - как предотвратить действие (создать исключение) ?


15-1184769735
Иксик
2007-07-18 18:42
2007.08.19
Молдавия спасена


15-1184735259
Notebook
2007-07-18 09:07
2007.08.19
Как перезагрузить ноутбук?


2-1185540202
delphiuser1
2007-07-27 16:43
2007.08.19
const при передаче в функцию/процедуру.


15-1184790822
Kerk
2007-07-19 00:33
2007.08.19
Смотрел женский футбол





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский