Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Eraston
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182

Побитовое замещение

06.08.2015, 21:20. Показов 1546. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам

Не по теме:

Не могу что-то догнать.
Есть int 0x 00 00 00 00


Как наиболее простым способом заместить одну из пар 4 бит другой?

set( 1, 0x56 )
0x 35 F3 E4 90 -=> 0x 35 F3 56 90
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2015, 21:20
Ответы с готовыми решениями:

Замещение слов в строке
Написать программу замещения первой половины строки второй, а второй – первой. Borland 3.1, но не принципиально. Заранее спасибо.

Замещение и виртуальные функции
Ребят,какой смысл в создание виртуальных функций ,кроме как создание базовых классов объекты которых нельзя создать?Ведь можно просто...

В чем разница между терминами замещение и переопределение
Добрый день! Скажите в чем разница между терминами замещение и переопределение? Также хотел спросить, если в базовом классе Base метод...

4
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
06.08.2015, 21:30
Лучший ответ Сообщение было отмечено Eraston как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
#include <cstdint>
 
uint32_t set_at( uint32_t value, uint32_t index, uint8_t byte ) {
    uint32_t shift = index << 3;
    return (value & ~(0xffllu << shift)) | byte << shift;
}
 
int main() {
    uint32_t i = 0x12345678;
    printf( "%08x\n", i );
 
    uint32_t j = set_at( i, 3, 0xfe );
    printf( "%08x\n", j );
}
1
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
06.08.2015, 21:33
C++
1
2
3
4
5
6
7
8
    unsigned a=0x35F3E490, b=0x56, c=0xFF;
    int n=2;
    b<<=n*4;
    c<<=n*4;
    c=~c;
    a&=c;
    a|=b;
    printf("%X\n",a);
0
 Аватар для Eraston
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
06.08.2015, 21:37  [ТС]
Ох уж эта магия побитовых операций
Моя реализация явно хромает в простоте вычислений
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
class _type_energy_potential{
public:
    void set( int type, unsigned char value ){
        vars = ( ( 0xFFFFFFFFFFFFFFFF ^ ( 0xFF << ( 8 * type ) ) ) & vars ) | ( value << ( 8 * type ) );
    };
    unsigned char get( int type ){
        return ( ( 0xFF << ( 8 * type ) ) & vars ) >> ( 8 * type );
    };
    unsigned long long get(){return vars;}
    enum { type_wind, type_storm, type_rival, type_tidal, type_wave, type_geothermal, type_condensat };
private:
    unsigned long long  vars = 0;
};
typedef _type_energy_potential tep;
 
int main()
{
    tep a;
    a.set( a.type_tidal, 200 );
    printf("0x%016X\n",a.get());
    printf("0x%016X\n",a.get( a.type_tidal ));
    printf("%d",a.get( a.type_tidal ));
    getchar();
    return 0;
}
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
07.08.2015, 00:24
Eraston, держи еще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int shrshl(int i, unsigned num, unsigned pair)
{
    pair <<= i * 8;
    num &= (0xFFFFFFFF ^ (0xFF << i * 8));
 
    return num ^ pair;
}
 
int main()
{
    unsigned i = 0xFE25AB12;
    cout << hex << i << endl;
    cout << hex << shrshl(3, i, 0x77);
    getchar();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2015, 00:24
Помогаю со студенческими работами здесь

Побитовое чтение
Есть файл видео и мне известна его структура. Например структура следующая: 8 бит 1 бит 1 бит 1 бит 13 бит и т.д. Как мне...

Побитовое смещение
Здравствуйте, задача така стоит: Хочу сделать циклический побитовой сдвиг любого числа. Пример: #include &lt;iostream&gt; ...

побитовое увеличение
Здравствуйте уважаемые пользователи. Это моя первая тема. Собственно суда я пришел за помощью. Так вот. Как побитово увеличить любое...

Побитовое вычитание
Здравствуйте. Задача сложить переменные, содержащих 2 машинных слова, используя только логические операции. Получилось такое чудо, однако...

Побитовое сравнение
Дан массив с десятичными числами, как сравнить (2ой,3ий,4ый и т.д.) бит 7 элемента с 1 элементом.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru