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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 12:10   #1
Artem78
 
Регистрация: 10.02.2012
Сообщений: 8
По умолчанию Поразрядные операции c++

Есть 16-ое число 0x12345678
И мне нужно изменить k(нумерация идёт справа налево) цифру числа на другую цифру используя только поразрядные операции
Например k=3;ch=9
Получаем 0x12345978
P.S. второй день мучаюсь не получается
Пробовал так
Код:
n = n | (ch<<k*4);
Artem78 вне форума Ответить с цитированием
Старый 10.12.2013, 13:36   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    long unsigned p = 0x12345678;
    cout << setbase(16) << p << endl;
    int k, ch;
    cin >> k >> ch;
    k *= 4;
    p &= ~(0xF << k);
    p |= ch << k;
    cout << setbase(16) << p << endl;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поразрядные операторы,операторы сдвига alekopoko Общие вопросы C/C++ 1 11.04.2013 23:40
Поразрядные операции Sv. Общие вопросы C/C++ 7 09.11.2012 00:15
Логические и поразрядные операции prem1era Общие вопросы C/C++ 2 25.03.2011 14:40
Поразрядные операции Максикок Помощь студентам 1 18.11.2010 20:23
Поразрядные операции eds Общие вопросы C/C++ 1 30.10.2008 10:29