Форум программистов, компьютерный форум CyberForum.ru

Биты (поменять нулевой и первый бит, второй и третий и т.д.) - C++

Восстановить пароль Регистрация
 
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
24.02.2013, 19:14     Биты (поменять нулевой и первый бит, второй и третий и т.д.) #1
Нужно поменять нулевой и первый бит, второй и третий и т.д. Тип числа - unsigned int. Хотя б алгоритм.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 19:14     Биты (поменять нулевой и первый бит, второй и третий и т.д.)
Посмотрите здесь:

C++ Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д.
поменять местами первый столбец со вторым ,третий с четвёртым, и т.д. C++
C++ В матрицах Р (7х8) и Q (8х6) поменять местами первую строку и строчку, в которой находится первый нулевой элемент
C++ Дан массив. Поменять местами его первый элемент со вторым, третий - с четвертым и т.д.
Поменять первый элемент со вторым,третий с четвертым и т.д C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.02.2013, 19:38     Биты (поменять нулевой и первый бит, второй и третий и т.д.) #2
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
#include <iostream>
 
int main()
{
    unsigned int val = 85; // 0b1010101
 
    unsigned int t1 = val & 1; // первый бит в составе val
    unsigned int t2 = val & 2; // второй бит в составе val
    val &= ~1; // разрядим первый бит
    val &= ~2; // разрядим второй бит
 
    t1 = t1 << 1; // сместим первый бит на еденицу влево
    t2 = t2 >> 1; // сместим второй бит на еденицу вправо
 
    val = val | t1 | t2; // соеденим результат.
    std::cout << val; // 0b1010110
 
    //****
    // Аналогично и для третьего и четвёртого
 
    t1 = val & 4; // третий бит в составе val
    t2 = val & 8; // четвёртый бит в составе val
 
    val &= ~4;
    val &= ~8;
 
    t1 = t1 << 1;
    t2 = t2 >> 2;
 
    val = val | t1 | t2;
    std::cout << val; // 0b1011010
}
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.02.2013, 20:08     Биты (поменять нулевой и первый бит, второй и третий и т.д.) #3
Еще как вариант...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
    unsigned int val = 6577; //max = 4294967295
    bitset<32> bits(val);
    cout<<"Before: "<<bits.to_string()<<endl;
    cout<<val<<endl;
    bits.flip();
    cout<<"After:  "<<bits.to_string()<<endl;
    val = bits.to_ulong();
    cout<<val;
    return 0;
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.02.2013, 21:16     Биты (поменять нулевой и первый бит, второй и третий и т.д.) #4
В 28 строке опечатка, нужно смещать на 1 бит..
Цитата Сообщение от xtorne21st Посмотреть сообщение
t2 = t2 >> 1;
Yandex
Объявления
24.02.2013, 21:16     Биты (поменять нулевой и первый бит, второй и третий и т.д.)
Ответ Создать тему
Опции темы

Текущее время: 16:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru