Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexander_vt
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 3
#1

Побитовые операции - C++

25.09.2012, 08:36. Просмотров 914. Ответов 6
Метки нет (Все метки)

Всем доброго утра. Дана такая задача: есть два чсила,поменять местами 2 последние цифры этих чисел между собой, т.е. 2 последних Х заменить на 2 последних У и наоборот. Но сделать это нужно с помощью битовых операций.Подскажите пожалуйста, с чего начать?как вообще работать в таком формате?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 08:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Побитовые операции (C++):

Побитовые операции - C++
Помогите пожалуйста, никак не могу справиться с этой задачкой. Выделить из числа x поле шириной n битов, начиная с позиции p, и...

Побитовые операции на с++ (<< и >>) - C++
Подскажите пожалуйста, такая задача - побитовый сдвиг на заданное количество символов сдвигает только цифры, как сделать чтобы он то же...

Побитовые операции - C++
Задание: Дано целое неотрицательное число. Определить количество составляющих его шестнадцатеричных цифр, содержащих в двоичном...

Побитовые операции - C++
Пожалуйста, объясните как работают побитовые операторы &amp; и |. Например идет: i=03; j=01; k=i &amp; j; // k=1 k=i | j; // k=3 А почему...

Побитовые операции - C++
От друга услышал идею о побитовой сортировки имен (например). К примеру, если у нас набор структурных переменных с анкетами работников, и...

Побитовые операции - C++
1-программа #include &lt;stdio.h&gt; #include &lt;windows.h&gt; int main(void) { char g; /* ??? ????????? */ char s; /* ??????? ?????? */ ...

6
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,451
25.09.2012, 08:43 #2
для шеснадцатеричных
х^=y&0xFF;
y^=x&0xFF;
х^=y&0xFF;
0
alexander_vt
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 3
25.09.2012, 12:02  [ТС] #3
а можно пояснить, что здесь происходит и откуда это берется? и как например сделать то же самое в двоичной и 8-ричной системе?
0
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,451
25.09.2012, 16:39 #4
Вот это
Цитата Сообщение от ValeryS Посмотреть сообщение
y&0xFF
выделение двух младших разрядов
0xFF в шестнадцатеричной равно 1111 1111 в двоичной 0377 в восьмеричной
а это
C++
1
2
3
x^=y;
y^=x;
x^=y;
обмен между двумя переменными
0
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 17:32 #5
XOR позволяет менять числа,
но требуется обменять местами не числа в целом, а их две последние цифры с помощью битовых операций..

т.е. 455 и 367 будут 467, 355

если я правильно понял задание
0
alexander_vt
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 3
25.09.2012, 22:09  [ТС] #6
Цитата Сообщение от kotleta Посмотреть сообщение
XOR позволяет менять числа,
но требуется обменять местами не числа в целом, а их две последние цифры с помощью битовых операций..

т.е. 455 и 367 будут 467, 355

если я правильно понял задание
да, все верно..
но все-таки, мне не понятно одно: когда мы выделяем два последних разряда, мы выбираем FF и 77, т.е. как бы 16-1=15(т.е. F) и 8-1=7
а как тогда поступить с десятеричной и двоичными системами? для десятичной получается брать
10-1=9, т.е. y&99? так не получается..
просто я хочу сделать так, чтобы 2 последние цифры заменялись в любой системе счисления, 2,8,10,16
просвятите дурака (
0
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,451
26.09.2012, 06:06 #7
не получится
отсечь младшие биты при помощи логических операций можно только для систем счисления кратных двум 2 -11 8 -111 111(077) 16 1111 1111 (0xFF)
для всех остальных СС ,считая десятичную, для выделения младших разрядов надо брать остаток от деления на основу
например
17%10 =7 (остаток) младший разряд

Добавлено через 3 минуты
Цитата Сообщение от alexander_vt Посмотреть сообщение
но все-таки, мне не понятно одно: когда мы выделяем два последних разряда, мы выбираем FF и 77, т.е. как бы 16-1=15(т.е. F) и 8-1=7
нет это тоже остаток от деления
попробуй разделить на 16,это значит сдвинуть вправо на 4 разряда, вот эти 4 разряда и представляют собой остаток F 1111
0
26.09.2012, 06:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2012, 06:06
Привет! Вот еще темы с ответами:

Побитовые операции - C++
Помогите решить несколько задач по битовым операциям,они все малы по реализации. И объяснить начиная с 3 задачи,что нужно сделать?А то не...

Побитовые операции - C++
Помогите, не могу понять как сделать эту программу( unsigned ChangeGroupBits(unsigned x, unsigned y, int n1, int n2); ChangeGroupBits–...

Побитовые операции - C++
Здравствуйте уважаемые читатели форума! СОвсем не представляю как сделать простейшую програмку на С++. Нужно вычислить номер позиции...

Побитовые операции - C++
Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 0-n (8 байт) выходящие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru