Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
4 / 4 / 1
Регистрация: 07.10.2012
Сообщений: 228
1

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

24.02.2013, 19:14. Показов 3308. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно поменять нулевой и первый бит, второй и третий и т.д. Тип числа - unsigned int. Хотя б алгоритм.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2013, 19:14
Ответы с готовыми решениями:

Массив: поменять местами первый и второй, третий и четвертый и т.д
Дан массив a из n целых чисел. Требуется поменять местами первый и второй, третий и четвертый и...

Первый и второй, третий и четвертый и т.д. отрицательные элементы поменять местами
Дан одномерный массив. Первый и второй, третий и четвертый и т.д. отрицательные элементы поменять...

Поменять местами в массиве первый и второй элементы, третий и четвёртый
Необходимо сделать программу, которая будет менять местами массивы первый и второй элементы, третий...

В массиве X(N) поменять местами первый и второй отрицательные элементы, третий и четвертый и т.д.
В массиве X(N) поменять местами первый и второй отрицательные элементы, третий и четвертый и т.д.

3
интересующийся
311 / 282 / 93
Регистрация: 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
}
1
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
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;
}
1
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
24.02.2013, 21:16 4
В 28 строке опечатка, нужно смещать на 1 бит..
Цитата Сообщение от xtorne21st Посмотреть сообщение
t2 = t2 >> 1;
1
24.02.2013, 21:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2013, 21:16
Помогаю со студенческими работами здесь

[Win32] Сдвиньте первый элемент на 1 бит влево, второй - на 2 бита вправо, третий - на 3 бита влево и т.д.
Объявите массив из 8 слов без знака.Сдвиньте первый элемент на 1 бит влево, второй элемент -на 2...

Поменять местами третий бит с пятым, результат умножить на 8 и проинвентировать
Есть задание: Дано число в двоичном коде поменять местами третий бит с пятым. Результат умножить на...

Дано число в двоичном коде поменять местами третий бит с пятым. Результат умножить на 8 и проинвентировать.
Дано число в двоичном коде поменять местами третий бит с пятым. Результат умножить на 8 и...

В первый год длина шоссейных дорог увеличивается на В, во второй—на В/2, в третий—на В/3, , в N-й—на В/N км
В первый год длина шоссейных дорог увеличивается на В, во второй—на В/2, в третий—на В/3, ..., в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru