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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2013, 13:53   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от olenka1808las Посмотреть сообщение
а если мне вот такой код 000010 нужно преобразовать в такой 000001, тогда как?
преобразовать по какому правилу???

установить единицу в нулевом бите
и обнулить первый бит ?

или инвертировать нулевой и первый биты (ноль заменить на единицу, а единицу - на ноль) ?!

по приведённому примеру выводы сделать нельзя...

например,
число 111111 в какое должно быть преобразовано?
число 000000 в какое должно быть преобразовано?
число 000001 в какое должно быть преобразовано?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 13:57   #12
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

а вы оба примера можете показать? как установить 1 в нулевом бите и обнулить 1 бит, и как инвертировать?
olenka1808las вне форума Ответить с цитированием
Старый 17.09.2013, 14:36   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
// обнулить нулевой бит
A &= ~1;

// установить в единицу первый бит 
A |=  2;  // (2 это в двоичном виде 000...00010 )

// инвертировать нулевой и первый биты числа A
A ^= 3;  // ( 3 это в двоичном виде 000...00011 )
p.s. не пойму, что Вы изучаете/решаете, но, возможно,
Вам будут полезны следующие ссылки:
Битовые операции

Битовые операции (из Википедии)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 14:44   #14
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

я пишу курсовую.. и даже не знаю как вам объяснить в чем его суть... ну вот у меня код вообще тридцать нулей, потом 1 и 0. ну разницы от первых тридцати нулей нет никакой?
olenka1808las вне форума Ответить с цитированием
Старый 17.09.2013, 15:19   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ну разницы от первых тридцати нулей нет никакой?
ну смотря для какой операции! для обнуления нулевого бита у вас маска должна быть 1111111111..1110 (тридцать одна единица и один ноль).
именно для этого и делается операция ~1.
она должна вернуть 1 в виде целого числа именно нужной длины, после инверсии получаем как раз такую маску, какая нам нужна.

для операций "установить в единицу первый бит" и "инвертировать нулевой и первый биты" разрядность числа не важна, маска от этого не изменится.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 15:22   #16
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

для обнуления первого бита тогда нужна маска тридцать единиц, потом ноль, потом единица. это тогда опишется как А&=~2?
а чтобы сделать в нулевом бите единицу тогда нужно записать А|=1? или я опять не правильно думаю....
olenka1808las вне форума Ответить с цитированием
Старый 17.09.2013, 15:45   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от olenka1808las Посмотреть сообщение
для обнуления первого бита тогда нужна маска тридцать единиц, потом ноль, потом единица. это тогда опишется как А&=~2?
а чтобы сделать в нулевом бите единицу тогда нужно записать А|=1? или я опять не правильно думаю....
вы думаете правильно. всё именно так.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 18:19   #18
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

спасибо за помощь..)
olenka1808las вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистры Волк Microsoft Office Excel 9 08.04.2009 16:07
Регистры Манжосов Денис :) Помощь студентам 8 28.07.2008 12:48
Регистры RealSHELS Общие вопросы Delphi 3 28.03.2008 18:56
Регистры Elm0 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 10.02.2008 19:49