Форум программистов, компьютерный форум 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. Таким образом,...
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 ";
C++ Не работает функция ввода массива http://www.cyberforum.ru/cpp-beginners/thread437889.html
У меня стоит задача вводить массива с клавиатуры размера M на N, с проверкой на диапазон. Вот мой код функции: void input (short mas ,int r,int c) { for (int i=0;i<r;i++) { for (int...
C++ Касательно указателей и ссылок. Цитирую фразу из популярной ныне книги Айвора Хортона. "Никогда не возвращайте из функции ссылку на локальную переменную" Так вот. Не понятно почему так категорично все. По моему даже оч. удобно... подробнее

Показать сообщение отдельно
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;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru