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

Написать функцию которая в заданом числе меняет местами два бита с задаными номерами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вопрос про Swich http://www.cyberforum.ru/cpp-beginners/thread437944.html
Пример: int i=2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; } Выполнение оператора switch начинается с оператора, помеченного case 2. Таким образом, переменная i получает значение, равное 6, далее выполняется оператор, помеченный ключевым словом case 0, а затем case 4, переменная i примет значение 3, а затем значение -2. Оператор, помеченный...
C++ Что за тип переменной ofstream ? Когда создается файл: ofstream A(""); Какой тип переменной A ? И как передавать его в функцию? http://www.cyberforum.ru/cpp-beginners/thread437939.html
C++ Что можно не устанавливать в VS 2008
Хочу сэкономить память, и вот хотел спросить что нужно для разработки С++ приложений, в том числе и с графическим интерфейсом скрин , и что можно не устанавливать
Удалить первый элемент с заданным значением. C++
Удалить первый элемент с заданным значением. #include<iostream.h> #include<stdlib.h> #include<math.h> void main () { int n, i, x; cout<<"Vvedite n ";
Visual C++ Как считать содержимое файла в структуру (MFC)? http://www.cyberforum.ru/cpp-beginners/thread437919.html
привет всем ! как можно считать такие данные с файла и сохранить в структуру с 5 полями (date, time ... ) (MFC C++) input.txt 2005-09-07 04:21:11 2 330 CreateService for wuauserv succeeded 2005-09-07 04:27:55 856 58c Service Main starts 2005-09-07 04:27:56 856 58c Using BatchFlushAge = 31316. 2005-09-07 04:27:56 856 58c Using SamplingValue = 403.
C++ Не работает функция ввода массива У меня стоит задача вводить массива с клавиатуры размера M на N, с проверкой на диапазон. Вот мой код функции: void input (short mas ,int r,int c) { for (int i=0;i<r;i++) { for (int j=0;j<c;j++) { do { cout << "Введите элемент " << i << " - строки " << j << " - столбца\n"; подробнее

Показать сообщение отдельно
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.01.2012, 16:12     Написать функцию которая в заданом числе меняет местами два бита с задаными номерами
особо без проверок на ошибки функция, но для демонстрации вполне подойдет.
беззнаковое целое надо давать на вход

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
36
37
38
39
40
41
42
unsigned int quad(unsigned int num) // возведение 2-ки в степень num
{
    unsigned int val = 0;
    if(num==0) 
        {return 1;}
    return val = quad(--num)*2;
};
 
int changebit(unsigned int num, int bit1=0, int bit2 = 0) //функция меняющая в числе num 2 бита местами
{
    char buf [15];
    itoa(num,buf,2);//переводит число в двоичный вид
    int lent = strlen(buf);
    bit1 = lent-bit1;//находим позиции бит в массиве
    bit2 = lent-bit2;
 
        if(bit1<0||bit1>31||bit2<0||bit2>31)return num; //небольшая проверка на ошибки
 
    char tmp = buf[bit1];
    buf[bit1] = buf [bit2];
    buf[bit2]= tmp; //здесь меняются местами биты
 
    int val = 0;
    int step = lent-1;
 
    for(int i = 0; i<lent;i++,step--)
    {
 
        if(buf[i]!='0')
        {
            val+=quad(step); высчитываем число проходом по массиву
        }
    }
    
    return val;
};
 
int main(void)
{
    int z = changebit(13,2,3);
return 0;
}
 
Текущее время: 19:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru