Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39

Поменять местами 2 бита

09.06.2020, 11:44. Показов 2502. Ответов 15

Студворк — интернет-сервис помощи студентам
− Написать код функции, принимающей в качестве аргументов и возвращающей все
необходимые параметры, без использования глобальных переменных.
− Обязательно использование только поразрядных операций для выполнения
задания, математические операции с индексами и счетчиками разрешены.

Поменять местами 2 бита (старший и младший) двух чисел разного размера.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2020, 11:44
Ответы с готовыми решениями:

Написать функцию которая в заданом числе меняет местами два бита с задаными номерами
Сижу на экзамене очень сильно нужна помощь: задание - написать функцию которая в заданом числе меняет местами два бита с задаными...

В двумерном массиве поменять местами максимальный и минимальный элемент местами
Написать фрагмент программы для решения следующей задачи.В двумерном массиве поменять местами максимальный и минимальный элемент местами....

Поменять местами столбец L и строку K местами квадратной матрицы 4х4
#include "stdafx.h" #include <iostream> using namespace std; #define N 4 #define M 4 int _tmain(int argc, _TCHAR* argv) {...

15
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
09.06.2020, 11:52
Цитата Сообщение от Qoozeek Посмотреть сообщение
Поменять местами 2 бита (старший и младший) двух чисел разного размера.
Ну примеры-то где? Чо с чем и между чем менять-то?
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39
09.06.2020, 12:09  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Ну примеры-то где? Чо с чем и между чем менять-то?
Так вот я сам не понимаю. Поэтому и создал эту тему. Походу что угодно с чем угодно
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
09.06.2020, 12:18
Цитата Сообщение от Qoozeek Посмотреть сообщение
Так вот я сам не понимаю. Поэтому и создал эту тему.
Тогда ты форумом ошибся. Тебе на форум телепатов-экстрасенсов надо. Тут таких нет.
Спроси у препода. За что-то ж он зарплату получает жэж?
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39
09.06.2020, 13:15  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Тогда ты форумом ошибся. Тебе на форум телепатов-экстрасенсов надо. Тут таких нет.
Спроси у препода. За что-то ж он зарплату получает жэж?
Я его ненавижу. Как вся эта тема пошла с удаленной учебой, так всё. Ничему не учат, даже задание нормально сформулировать не может. И ни с чем я не ошибался. Я полагал что это у меня с башкой беда и я не понимаю что делать, а как оказалось препод - £$%*#

Добавлено через 13 минут
Цитата Сообщение от Verevkin Посмотреть сообщение
Ну примеры-то где? Чо с чем и между чем менять-то?
А если так: Создать массив на 8 логических элементов, сохранить их, поменять первый и последний, записать обратно? Такое оформить поможешь?
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
09.06.2020, 13:17
Цитата Сообщение от Qoozeek Посмотреть сообщение
Такое оформить поможешь?
нет. Это не соответствует условию задачи.
Цитата Сообщение от Qoozeek Посмотреть сообщение
Я его ненавижу. Как вся эта тема пошла с удаленной учебой, так всё. Ничему не учат, даже задание нормально сформулировать не может. И ни с чем я не ошибался. Я полагал что это у меня с башкой беда и я не понимаю что делать, а как оказалось препод - £$%*#
Дай ему ссылку на этот тред, я с ним сам порешаю.
0
09.06.2020, 13:24

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
Дай ему ссылку на этот тред, я с ним сам порешаю.
А ты апассный. :D

0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
09.06.2020, 13:30
Цитата Сообщение от Croessmah Посмотреть сообщение
А ты апассный.
Кликните здесь для просмотра всего текста
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39
09.06.2020, 14:15  [ТС]
− Написать код функции, принимающей в качестве аргументов и возвращающей все
необходимые параметры, без использования глобальных переменных.
− Обязательно использование только поразрядных операций для выполнения
задания, математические операции с индексами и счетчиками разрешены.


Создать массив на 8 логических элементов, сохранить их, поменять первый и последний, записать обратно
0
41 / 37 / 8
Регистрация: 24.07.2013
Сообщений: 219
09.06.2020, 14:21
Я конечно не эксперт но младший и старший бит это как бы указывает вам что с чем менять.
Допустим если это int 32бита а второе число short int 16бит то поменять надо 1бит первого числа с последним битом второго. Короче согласен тут сам черт ногу сломит.
Давно не игрался с битовыми операциями и Тд.
По этому что-то может быть карявым как мой русский но вот накидал за 5 минут что-то такое:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
template <typename T, typename T1>
void Foo(T &x, T1 &y) {
    int sX = sizeof(x) * 8; //Определяем размер первого типа в битах
    int sY = sizeof(y) * 8; //Определяем размер второго типа в битах
    T1 checkX = (1 << ((sX - 1) )) & x; //Проверка установлен ли бит в x
    T checkY = 1 & y;   //Проверка установлен ли бит в y
    x <<= 1;    //Сдвиг для отчистки последнего бита x
    x >>= 1;
    y >>= 1;    //Сдвиг для отчистки первого бита y
    y <<= 1;
    y |= checkX;    //Установка бита 
    x |= (checkY << (sX - 1));  //Установка бита 
}

Это примерный варик который подлежит множественной оптимизации и подгонки конкретно под вашу задачу.
Отчистку сдвигами тоже стоит заменить, так как сделана на костылях(Не вспомнил как правильно затирать) если не ошибаюсь там все делаеться через маски.
Удачи!!
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
09.06.2020, 15:45
что-то типа того? (не уверен что все правильно сделал)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<class T1, T2>
void hiloBitsExchange(T1 &d1, T2 &d2)
{
    bool hiBit, loBit;
    unsigned long long mask = 1;
    loBit = d2 & mask;
    mask <<= (sizeof(T1) * 8);
    hiBit = d1 & mask;
    if (hiBit)
        d2 |= 1;
    else
        d2 = ~(~d2 | 1);
    if (loBit)
        d1 |= mask;
    else
        d1 = ~(~d2 | mask);
}
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39
09.06.2020, 15:53  [ТС]
Цитата Сообщение от Annemesski Посмотреть сообщение
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<class T1, T2>
void hiloBitsExchange(T1 &d1, T2 &d2)
{
    bool hiBit, loBit;
    unsigned long long mask = 1;
    loBit = d2 & mask;
    mask <<= (sizeof(T1) * 8);
    hiBit = d1 & mask;
    if (hiBit)
        d2 |= 1;
    else
        d2 = ~(~d2 | 1);
    if (loBit)
        d1 |= mask;
    else
        d1 = ~(~d2 | mask);
}
идентификатор "T2" не определен
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
09.06.2020, 16:00
Qoozeek, конечно же, украл один клас.
C++
1
template<class T1, class T2
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 39
09.06.2020, 16:04  [ТС]
Цитата Сообщение от Annemesski Посмотреть сообщение
конечно же, украл один клас.
Теперь новая ошибка
LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ). pr4 C:\Users\79818\Desktop\pr4\pr4\MSVCRTD.l ib(exe_main.obj) 1
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.06.2020, 16:21
Qoozeek, ты же в курсе, что тебе не всю программу написали?
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
09.06.2020, 16:55
Лучший ответ Сообщение было отмечено Qoozeek как решение

Решение

подправил кой чего (за компом в IDEшке всяко удобнее чем в редакторе форума с телефона )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
template<class T1, class T2>
void hiloBitsExchange(T1 &d1, T2 &d2)
{
    bool hiBit, loBit;
    unsigned long long mask = 1;
    loBit = d2 & mask;
    std::cout << "loBit = " << loBit << std::endl;
    mask <<= (sizeof(T1)* 8 - 1); // тут конечно на один бит меньше надо сдвигать
    hiBit = d1 & mask;
    std::cout << "hiBit = " << hiBit << std::endl;
    if (hiBit)
        d2 |= 1;
    else
        d2 = ~(~d2 | 1);
    if (loBit)
        d1 |= mask;
    else
        d1 = ~(~d1 | mask); // а тут, таки d1, а не d2
}
 
int main()
{
    int a = 0;
    char b = 3;
    hiloBitsExchange(a, b);
 
    std::cout << "a = " << a << std::endl
        << "b = " << (int)b << std::endl;
 
    system("pause");
 
    return 0;
}
Эх, самому глаз режет вот этb вот d1 = ~(~d1 | mask), но оптимальнее подхода не вижу.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2020, 16:55
Помогаю со студенческими работами здесь

Массив: Поменять местами первый элемент поменять с последним, второй - с предпоследним и т.д.
Задано массив из четного числа элементов.Поменять местами первый элемент поменять с последним, второй - с предпоследним и т.д.

Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа
Дано число. Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа. код частично...

Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита
Ввести целое A. Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с ервогоп бита. B=1A05h.

Masm поменять местами 2 бита
помогите, пожалуйста, не могу найти ошибку вызов в паскале program pr; uses crt; {$F+} {$L 1.obj} var x,r,s: word;y,z:byte; ...

Поменять местами два бита
Здраствуйте! Задание такое - с помощью битовых операций реализуйте перестановку двух любых битов в данном слове местами. Вот что я уже...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru