![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.06.2013
Сообщений: 28
|
![]()
Здравствуйте, подскажите пожалуйста, как установить в ноль нужный разряд регистра?
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
сделать логическое "И" (операция AND) с маской, где все биты равны единице, кроме того, который нужно сбросить в ноль.
p.s. не исключаю, что в C есть специальные операции работы с битами, в этом случае, конечно, мой совет не совсем подходит... |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.06.2013
Сообщений: 28
|
![]()
ну вот например мне нужно сделать первый бит нулевым. и записать тогда так: A&=~(1<<1)
? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 05.04.2012
Сообщений: 134
|
![]() Код:
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
a^a, самое простое. Исклюючающее ИЛИ, с арифмектическим регистром.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Smitt&Wesson, неверно. Ваш xor обнулит полностью все разряды, а TC нужно обнулить только один разряд!!
Nuklon, +1 |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 06.06.2013
Сообщений: 28
|
![]()
Спасибо за ответы)
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Какой именно? Для этого можно применить команду И. 0xfe, обнулит младший разряд регистра.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Smitt&Wesson, логический "and" с 0xfe обнулит не только младший (нулевой байт), но и все старшие (ведь нигде не сказано, что целое число занимает один байт!!
впрочем, это всё уже неважно, в пост #4 Nuklon уже дал ответ (нужно логически инвертировать (бинарный "not") целое число, содержащее единицу в нужном разряде (в данном случае, в нулевом бите). И полученную маску исплользовать по "and"). Думаю, что продолжать обсуждение бессмыслено, тему можно закрывать.. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 06.06.2013
Сообщений: 28
|
![]()
а если мне вот такой код 000010 нужно преобразовать в такой 000001, тогда как?
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Регистры | Волк | 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 |