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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
#1

Сброс битов - C++

21.09.2013, 20:37. Просмотров 1141. Ответов 4
Метки нет (Все метки)

Вот такое условие. "Если в числе x установлен бит n и установлен бит m, то в числе y сбросить биты 3 и самый старший бит." Логически понятно, но как представить в виде кода С++. При помощи цикла.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 20:37     Сброс битов
Посмотрите здесь:

C++ Подсчет битов
C++ Обнуление битов
C++ Перенос битов
C++ Замена битов
C++ Копирование битов
C++ Шифрация битов
Установка битов C++
C++ Перевод таблицы битов и времени в последовательность битов arduino
C++ Установка и сброс битов
Перестановка битов C++
Операции с побитовыми операторами (число 8 битов и число 9 битов) C++
C++ Обнуление битов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4873 / 3012 / 370
Регистрация: 10.11.2010
Сообщений: 11,062
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 21:07     Сброс битов #2
Цикл тут не нужен.
C++
1
2
3
4
5
    int x = 0x12345678;
    int y = 0x12345678;
    int m = 2;
    int n = 5;
    if ( (x & (1 << m)) && (x & (1 << n)) ) y &= ~((1 << 3) | (1 << 31));
Проверить не могу, но по-моему все верно.
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
22.09.2013, 16:43  [ТС]     Сброс битов #3
Цитата Сообщение от castaway Посмотреть сообщение
Цикл тут не нужен.
C++
1
2
3
4
5
    int x = 0x12345678;
    int y = 0x12345678;
    int m = 2;
    int n = 5;
    if ( (x & (1 << m)) && (x & (1 << n)) ) y &= ~((1 << 3) | (1 << 31));
Проверить не могу, но по-моему все верно.
а как это записать программой "от" и "до"?
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
22.09.2013, 16:50     Сброс битов #4
1_vlad, а зачем тебе от и до? В условии задачи написаны конкретные номера битов.
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
22.09.2013, 17:03  [ТС]     Сброс битов #5
Цитата Сообщение от lipnev Посмотреть сообщение
1_vlad, а зачем тебе от и до? В условии задачи написаны конкретные номера битов.
у меня есть код
Код
#include <iostream>
//#include <cstdlib>
//#include <stdio.h>
using namespace std;
const int N = 8;
 
int print (int ar []) {
for (int i = 0; i<N; i++) {
cout<<ar [i];
}
cout<<endl;
return 0;
}
int printDecAsBin(int a, int* pdec) {
 
while (a > 0) {
for (int i = 7; i>=0; i--) {
int b = a % 2;
a /= 2;
pdec [i] = b;
}
    }
return 0;
}
 
int main()
{
    int dec [N] = {0};
    int* pdec = dec;
    setlocale(LC_ALL, "rus");
    int x,y;
    int n,m;
    
    int z=sizeof(y)-1;
 
    cout<<"Ведите данные\n";
    cout<<"x=";cin>>x;
    cout<<"y=";cin>>y;
    cout<<"m=";cin>>m;
    cout<<"n=";cin>>n;
    
    //system("cls");
    cout<<"Исходные данные в десятичном виде:\n"<<x<<" - x\n"<<y<<" - y\n"<<m<<" - m\n"<<n<<" - n\n";
    cout<<"Исходные значения x, y в двоичном виде:"<<endl;
    printDecAsBin(x, pdec);
    printf("%s - x\n",print(pdec)); 
    printDecAsBin(y, pdec);
    printf("%s - y\n",print(pdec)); 
 
      
    system("pause");
    return 0;
    }
хочу после функции "int printDecAsBin(int a, int* pdec)" созать еще одну функцию с названием "resetBit" и в нее вставить тот код, что мне советуют. Но не могу сообразить.

кратко говоря, мне предложили условие. а как это прогрмаммно сообразить и вывести в компиляторе?
Yandex
Объявления
22.09.2013, 17:03     Сброс битов
Ответ Создать тему
Опции темы

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