Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
#1

Вывод двоичного числа и сброска битов - C++

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

Примерно такого типа задачаНаписать программу на языке C++, читающую со стандартного ввода 4 десятичных числа x, y,m, n. Все смещения будут указываться начиная с младшего бита,начиная с 0. Если в числе x установлен бит n и установлен бит m, то в числе y сбросить биты 3 и самый старший бит.
Программа должна вывести все исходные данные в десятичном виде, исходные и полученные значения x, y в двоичном виде в столбик, причём справа от числа должно быть выведено имя соответствующей переменной.

Код
#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;
	}
У меня начало вот такое получается. То есть перевод совершил, но далее запутался как сбрасывать биты. Что посоветуете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 20:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод двоичного числа и сброска битов (C++):

Вывод двоичного представления целого числа - C++
написать код консольного приложения,реализующий ввод с клавиатуры в бесконечном цикле целого десятичного числа из диапазона 0...65635 и...

Перевод таблицы битов и времени в последовательность битов arduino - C++
доброго времени суток в приведенной ниже таблице левый столбец - биты, правый - их длительность. известно, что единичный сигнал длится от...

Вывод в двоичных из двоичного файла - C++
Мне нужно вывести информацию находящуюся в двоичном файле но при работе программы вылезает ошибка void main() { SetConsoleCP(1251); ...

Цикл для проверки битов числа - C++
Имеется задача: &quot;Определить, насколько в числе А больше значащих битов, равных единице, чем битов, равных ну-лю&quot;. Собственно, я...

Побитовые операции в Си. Изменение отдельных битов числа - C++
Собственно задание такое: &quot;Дано длинное целое неотрицательное число k. Получить целое число, отбросив нечетные биты данного числа k.&quot; Не...

Xor двоичного числа - C++
Добрый день! Прошу написать простую программу на c++ xor двоичного числа.

4
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
21.09.2013, 22:37 #2
Цитата Сообщение от 1_vlad Посмотреть сообщение
Если в числе x установлен бит n и установлен бит m, то в числе y сбросить биты 3 и самый старший бит.
Как то так:
C++
1
2
3
4
5
unsigned int x, y;
// ...
if ((x & (1u << n)) && (x & (1u << m))) {
   y &= ~((1u << 3) | (1u << (sizeof (y) * CHAR_BIT - 1)));
}
0
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
22.09.2013, 16:35  [ТС] #3
Цитата Сообщение от gray_fox Посмотреть сообщение
Как то так:
C++
1
2
3
4
5
unsigned int x, y;
// ...
if ((x & (1u << n)) && (x & (1u << m))) {
   y &= ~((1u << 3) | (1u << (sizeof (y) * CHAR_BIT - 1)));
}
что в данном случае является 1u? u - unsigned?
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
22.09.2013, 19:04 #4
Цитата Сообщение от 1_vlad Посмотреть сообщение
u - unsigned?
Да. Use bitwise operators only on unsigned operands
0
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
22.09.2013, 19:10  [ТС] #5
gray_fox,

а как это оформить с помощью функции, чтобы ее потом вставить в общий код программы?
0
22.09.2013, 19:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 19:10
Привет! Вот еще темы с ответами:

проверка двоичного числа - C++
написать программу которая проверяет является ли введенная с клавы строка двоичным числом

Деление числа двоичного вида - C++
Помогите с заданием. Число х вводится в двоичном виде, максимальная длина числа 64 разряда, затем вводится число y. Определить ли нацело...

Перевод двоичного числа в десятичное - C++
Программа принимает введенное с клавиатуры двоичное число, например 1011, и выводит его десятичное представление, для 1011 - 11. Программа...

Произвести в двоичном представлении числа обмен битов с заданными номерами - C++
Дано короткое целое неотрицательное число. Произвести в его двоичном представлении обмен битов с номерами 0 и 1, 2 и 3, 4 и 5 и т.д. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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