0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 31
1

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

23.01.2015, 22:46. Показов 2026. Ответов 10
Метки нет (Все метки)

Спасибо тем, кто помог с прошлой задачей, у меня появилась ещё одна)
Кому не трудно помочь, пожалуйста:

Вводится число k, принимающее значение в диапазоне от 0 до 255. Используя логические (поразрядные) операции над числами, преобразовать это число, оставив i-й и j-й разряды, номера которых вводит пользователь, такими, какие они есть, а остальные разряды сбросить в нуль. Вывести исходное и преобразованное число

Заранее премного благодарен, не только я, но и мой знакомый(собственно чьё задание)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2015, 22:46
Ответы с готовыми решениями:

Выполнить поразрядные логические операции над машинными кодами
99 OR -17 99 AND 17 17 ← 2 (18 OR NOT –8) AND NOT –7 XOR 3 еще блок схему сделайте пожалуйста...

что такое Поразрядные логические операции C++
Поразрядные логические операции C++?

Записать логические выражения, используя условные операторы, операции отношений и логические операции

Записать логические выражения, используя условные операторы, операции отношений и логические операции
Записать логические выражения, используя условные операторы, операции отношений и логические...

10
^
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 290
23.01.2015, 23:33 2
Не проверял
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
    m, n, i, j, number: byte;
    
begin
 
write('Number = ');
read(number);
 
m:=1 shl (i-1);
n:=1 shl (j-1);
 
number:=number and (n or m);
 
write('Number = ', number);
end.
Но, думаю, тот всё логично

Добавлено через 8 минут
У меня выводится только обработанное число. Вы сможете самостоятельно переписать программу так, чтобы она выводила и то, и другое? Я просто изначально не полностью задание прочитал.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 31
23.01.2015, 23:58  [ТС] 3
Боюсь что я напишу не правильно.
Если не затруднит, смогли бы вы написать?
0
^
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 290
24.01.2015, 00:02 4
Лучший ответ Сообщение было отмечено ceberg как решение

Решение

Не надо бояться. Надо пробовать. Если будете бояться, ничему не научитесь. Если что-то не получается, вы можете спросить на форуме.
Держите переделанное решение:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
    m, n, i, j, number_1, number_2: byte;
    
begin
 
write('Number = ');
read(number_1);
 
m:=1 shl (i-1);
n:=1 shl (j-1);
 
number_2:=number_1 and (n or m);
 
write('Number do obrabotki = ', number_1, 'Number posle obrabotki = ', number_2);
end.
1
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 31
24.01.2015, 00:05  [ТС] 5
Спасибо большое. Я приму ваш совет)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
6721 / 3935 / 2655
Регистрация: 22.11.2013
Сообщений: 11,302
Записей в блоге: 1
24.01.2015, 00:31 6
Pascal
1
2
3
4
5
6
7
8
9
var
  n, i, j: Byte;
begin
  Write('Введите число [0..255]: '); ReadLn(n);
  repeat
    Write('Введите 2 номера разрядов [0..7]: '); ReadLn(i,j);
  until (i<>j) and (i in [0..7]) and (j in [0..7]);
  WriteLn('Исходное: ',n,', преобразованное: ',n and (1 shl i or 1 shl j));
end.
0
^
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 290
24.01.2015, 00:56 7
bormant, у кого из нас неверно вычисляется позиция разрядов? У вас разряды нумеруются от нуля или единицы? В моём случае нумерация идёт от единицы.

Pascal
1
m:=1 shl (i-1);
Цель такой формулы состоит в том, чтобы преобразовать число 1 таким образом, чтобы в двоичной записи получившегося числа (m) 1 стояла на i-й позиции.
При i = 1 имеем 1 (единица на 1 месте)
При i = 3 имеем 100 (единица на 3 месте)
При i = 8 имеем 10000000 (7 нулей) (единица на 8 месте).
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
6721 / 3935 / 2655
Регистрация: 22.11.2013
Сообщений: 11,302
Записей в блоге: 1
24.01.2015, 10:32 8
Вадим Мошев,
У обоих правильно, но вы считаете разряды с менее значимого с 1, я -- с менее значимого с 0, о чем дана отдельная подсказка в приглашении ввода в виде [0..7].
Нумерация разрядов от младшего с 0 удобна еще и тем, что установленная в i-м разряде единица соответствует числу 2^i. Мы ведь помним, что двоичная запись числа является ничем иным, как разложением числа по степеням двойки?

А поскольку исходное задание точного указания на то, каким именно образом нумеруются разряды, не содержало, я позволил себе выбрать наиболее очевидный с моей точки зрения.
0
^
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 290
24.01.2015, 14:21 9
bormant,
Цитата Сообщение от bormant Посмотреть сообщение
Мы ведь помним, что двоичная запись числа является ничем иным, как разложением числа по степеням двойки?
Возможно, вы имеете в виду то, что любое натуральное число N можно представить в виде суммы степеней двойки: 2^m1 + 2^m2 + ... + 2^mk, причём m1 > m2 > ... > mk.

Разложение видно лучше, если число N перевести в двоичную систему счисления. Тогда, разложение вырождается в сумму слагаемых вида 1 и (mi - 1) нулей справа.

Правда, имхо, это к исходной задаче не имеет отношения, но я вас понял. Я встречал в литературе случаи, когда разряды нумеровались с нуля.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
6721 / 3935 / 2655
Регистрация: 22.11.2013
Сообщений: 11,302
Записей в блоге: 1
24.01.2015, 15:09 10
https://www.cyberforum.ru/cgi-bin/latex.cgi?N = \sum k_i \cdot 2^i, где https://www.cyberforum.ru/cgi-bin/latex.cgi?k_i одно из 0 или 1 -- те самые двоичные цифры i-й позиции считая с 0 справа налево.
0
^
425 / 50 / 16
Регистрация: 23.07.2014
Сообщений: 290
24.01.2015, 15:11 11
Да, я об этом и хотел написать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2015, 15:11
Помогаю со студенческими работами здесь

Записать логические выражения, используя условные операторы, операции отношений и логические операции.
Нужно: Текст программы (включая подробные комментарии) Блок-схему алгоритма ...

Задание: записать логические выражения, используя условные операто- ры, операции отношений и логические операц
Задание: записать логические выражения, используя условные операторы, операции отношений и...

Подскажите "Логические и поразрядные операции языка С#"
Подскажите &quot;Логические и поразрядные операции языка С#.&quot;???

Используя побитовые операции, преобразовать десятичное число в двоичное
printf(&quot;Десятичное значение числа: &quot;); scanf(&quot;%d&quot;, &amp;x); a=0; do { a=a+x&amp;1;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru