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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2013, 16:20   #1
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию Регистры

Здравствуйте, подскажите пожалуйста, как установить в ноль нужный разряд регистра?
olenka1808las вне форума Ответить с цитированием
Старый 16.09.2013, 16:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

сделать логическое "И" (операция AND) с маской, где все биты равны единице, кроме того, который нужно сбросить в ноль.


p.s. не исключаю, что в C есть специальные операции работы с битами, в этом случае, конечно, мой совет не совсем подходит...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2013, 16:43   #3
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

ну вот например мне нужно сделать первый бит нулевым. и записать тогда так: A&=~(1<<1)
?
olenka1808las вне форума Ответить с цитированием
Старый 16.09.2013, 22:02   #4
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
A &= ~1;
Можно так для наглядности.
A &= ~(1 << 0);
Nuklon вне форума Ответить с цитированием
Старый 16.09.2013, 22:21   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

a^a, самое простое. Исклюючающее ИЛИ, с арифмектическим регистром.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 16.09.2013, 22:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Smitt&Wesson, неверно. Ваш xor обнулит полностью все разряды, а TC нужно обнулить только один разряд!!

Nuklon, +1
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 06:15   #7
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

Спасибо за ответы)
olenka1808las вне форума Ответить с цитированием
Старый 17.09.2013, 07:41   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Smitt&Wesson, неверно. Ваш xor обнулит полностью все разряды, а TC нужно обнулить только один разряд!!

Nuklon, +1
Какой именно? Для этого можно применить команду И. 0xfe, обнулит младший разряд регистра.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.09.2013, 10:40   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Smitt&Wesson, логический "and" с 0xfe обнулит не только младший (нулевой байт), но и все старшие (ведь нигде не сказано, что целое число занимает один байт!!
впрочем, это всё уже неважно, в пост #4 Nuklon уже дал ответ (нужно логически инвертировать (бинарный "not") целое число, содержащее единицу в нужном разряде (в данном случае, в нулевом бите). И полученную маску исплользовать по "and").
Думаю, что продолжать обсуждение бессмыслено, тему можно закрывать..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2013, 13:48   #10
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

а если мне вот такой код 000010 нужно преобразовать в такой 000001, тогда как?
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