Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2013, 18:34   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию Представить множество битовым рядком

63492 - ето число есть представлением множества.
Теперь мне нужновывести все елементы, которые входят в ето множество, делаю так:
Код:

for(int i = 1; i <= 8*sizeof(Vhidna_mn); i++) 
	if((Vhidna_mn &(1<<(i-1)))!=0) 
		textBox3->Text = textBox3->Text+" "+Convert::ToString(i-1);
здесь long long int Vhidna_mn = 63492
в двоичном представление оно выглядит так: 1111100000000100
но вот что у меня получаетса в текстбоксе: 2 11 12 13 14 15 34 43 44 45 46 47.
а должно быть только 2 11 12 13 14 15. В чем моя ошибка?
Pein95 вне форума Ответить с цитированием
Старый 19.01.2013, 18:46   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
long long int Vhidna_mn = 63492;
for(int i = 1; i <= 8*sizeof(Vhidna_mn); i++) 
    if((Vhidna_mn &((long long int)1<<(i-1)))!=0) 
        printf("%d\n", i-1);
Правильно выводит.

Лучше, имхо:
Код:
long long int Vhidna_mn = 63492;
for(int i = 0; i < 8 * sizeof(Vhidna_mn); ++i) 
    if ((Vhidna_mn >> i) & 1) 
        printf("%d\n", i);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.01.2013, 18:48   #3
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

Спасибо) помогли)
Pein95 вне форума Ответить с цитированием
Старый 19.01.2013, 19:32   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

Ещо один вопрос нащет множеств)
Я пробую инвертировать все биты. Но опять какая то ошибка.
Код:
long long int Vhidna_mn = 63492;
 long long int A =9223372036854776028;
Vhidna_mn = A^Vhidna_mn;
и когда вывести все елементы, которые входят в полученое множество получаетса вот что: 3 4 6 7 11 12 13 14 15 63
Pein95 вне форума Ответить с цитированием
Старый 19.01.2013, 19:41   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Инвертировать все биты:
Код:
Vhidna_mn = ~Vhidna_mn;
или
Код:
Vhidna_mn = -1 ^ Vhidna_mn;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 19.01.2013 в 19:43.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Представить математическую модель vitalina-str Помощь студентам 0 19.10.2011 17:10
Множество, содержащее натуральные числа из первой сотни. Сформировать новое множество из простых чисел первого множества Aimet Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2011 20:50
Дано множество А, напечатать четные элементы, входящие в другое множество (Паскаль) Марийка92 Помощь студентам 4 03.04.2011 17:38
Задано некоторое множество М и множество Т того же типа dark999 Помощь студентам 5 01.04.2011 14:17
Вопрос по битовым образам (или про построение изображение до его прорисовки) ROD Общие вопросы C/C++ 0 19.02.2009 23:03