• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вывод Остатка От Деления В Двоичной Системе

  • Автор темы Rendall
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Rendall

Задача:

Написать программу, используя только побитовые операции и выполнить на тестовых данных. Реализовать вычисление целочисленного остатка от деления 2-х чисел а и b (int a, b ).

Насколько я понял, пользователь вводит 2 числа в десятеричной системе, программа переводит их в двоичную, делит, а затем выводит на экран остаток от деления в двоичной и десятеричной системе. Проблема заключается в том, что я не умею делить в двочной системе и совсем не разбираюсь в побитовых операциях, поэтому очень нужна ваша помощь
 
R

rrrFer

Проблема заключается в том, что я не умею делить в двочной системе и совсем не разбираюсь в побитовых операциях, поэтому очень нужна ваша помощь
научись, разберись. Или не решай задачу вовсе - зачем тебе ее дали если ты не разбираешься?

Добавлено:
Насколько я понял, пользователь вводит 2 числа в десятеричной системе, программа переводит их в двоичную, делит, а затем выводит на экран остаток от деления в двоичной и десятеричной системе.
понял неправильно. В задаче ничего не сказано про вывод на экран в двоичной и десятичной системе, на экран можно вообще не выводить( в задаче сказано лишь про "вычисление"). Но надо как-то проверить работоспособность программы - самое банальное - вывести резальтат работы на экран, рассчитать результат вручную, и сравнить результаты.

Про перевод в двоичную в условии задаче тоже ничего не сказано. Хватит фантазировать - работай )
 
R

Rendall

это не фантазии, это лабораторная работа по с++ ;) , есть пример кода где числа в двоичном представлении складываются "в столбик" надо переделать чтоб делились и выводить остаток, вывод данных на экран или в файл.

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
C++:
//Example
//подключаемые файлы с прототипами функций

#include "stdafx.h"
#include <iostream>
#include <clocale>

//вывод двоичного представления десятичного числа х
void BinOut(unsigned char x);
//вычисление суммы двух чисел в "столбец"
unsigned char BinAdd(unsigned char a, unsigned char b);
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char a, b, sum;
setlocale(0, "Rus");
printf("Введите a: ");
scanf_s("%d", &a);
printf("Двоичное представление a: ");
BinOut(a);
printf("\nВведите b: ");
scanf_s("%d", &b);
printf("Двоичное представление b: ");
BinOut(b);
//вычисление суммы в "столбец"
sum = BinAdd(a, b);
printf("\nДесятичное представление a + b = %d\n", sum);
printf("Двоичное представление a + b = ");
BinOut(sum);
printf("\n");
//описание указателя на структуру типа FILE
FILE* stream;
errno_t err;
//открытие файла для записи данных (в случае отсутствия файла с таким именем - создание)
err = fopen_s(&stream, "test.txt", "w+" );
if( err == 0 )
{
fprintf(stream, "Десятичное представление\n a = %d, b = %d\n a + b = %d", a, b, sum);
fclose(stream);
}
else
printf( "Файл 'test.txt' не был открыт\n" );
system("pause");
return 0;
}
void BinOut(unsigned char x)
{
for (int i = 0; i < 8; i++)
{
if (x & 0x80)
putchar('1');
else
putchar('0');
x=x<<1;
}
}
unsigned char BinAdd(unsigned char a, unsigned char b)
{
unsigned char mem = 0, rez = 0;
for (int i = 0; i < 8; i++)
{
rez>>=1;
if (((a>>i)&1)^((b>>i)&1))
{
if (!(mem&1))
rez|=0x80;
}
else
if ((a>>i)&1)
if (mem)
{
mem = 1;
rez|=0x80;
}
else
mem=1;
else
if (mem)
{
mem = 0; rez|=0x80;
}
}
return rez;
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!