• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Двоичное исчисление

  • Автор темы Автор темы kreol
  • Дата начала Дата начала

kreol

Новые
Регистрация
27 Фев 2010
Сообщения
659
Реакции
16
Баллы
0
Двоичное исчисление

подскажите как решить:
№1 дано число в прямом коде
1) перевести в обратный код вот что получилось... вот что получилось
Код:
long a=0,b=0,c=-10100001; //с наше число   b выходной результат
b=a;
if (c<0){
 a=-c;
 for(int i=7;i>-1;i--){
  b=b+(~(long(a/pow(10,i)))+2)*pow(10,i);
  a=a-(long((a/pow(10,i)))*pow(10,i));
  }
 }
из описания википедии вроде правильно.
2) перевести то же число в дополнительный код. я так понял надо к предыдущему прибавить 1. но как это реализовать если получится например 00010111? как вообще реализовывается сумма?

числа типа long или int. хотя если есть что-то похожее на чисто бинарное представление то подскажите...

так же вопрос как реализовать такое

даны числа X Y в прямом коде. составить прогу которая выполняет арифметические операции в обратном и дополнительном кодах.
X+Y -X-Y X-Y Y-X

помогите пожалуйста или куском кода(возможно на паскале) или алгоритмом...
 
забыл написать древний компилятор turbo c
используется c++
 
Чего-то я вообще ничего не понял(я правда в С++ только начинаю разбираться)?
1. А как компилятор узнает что -10100001(и причем там минус к двоичному коду?) именно (по вашему представлению) двоичное представление числа? Вы просто инициализируете переменную с копией целочисленного константного литерала. Или я не так чего-то понял?
2. b=a - вы забыли дописать a=b; и b = a + 0 * 448923;
 
да компилятору пофиг на это я работаю в 10-ной системе счислеия но использую только 0 и 1.
2. я там перепутал. надо b=c
 
сумму я вроде как понял как сделать
 
№1 дано число в прямом коде
Что вы понимаете под выражением "прямой код"?
 
при переводе числа с например десятиричной системы методом деления мы получаем прямой код
 
Я так понял под выражением "прямой код" вы понимаете двоичный код. Еще вопрос: а к чему там оператор if? Вы ведь явно инициализировали переменную "с" отрицательным значением? Не проще убрать минус и оператор if?

№1 дано число в прямом коде
c=-10100001
я работаю в 10-ной системе счислеия но использую только 0 и 1
вы ломаете мой мозг

У вас дана переменная, инициализированная копией целочисленного константного литерала. То есть это не двоичное представление числа -161.
В общем вы сначала толком объясните какую задачу требуется решить.
 
Если вам нужно перевести число из двоичного представления в десятичное то:
Код:
#include <iostream>
#include <bitset>
#include <string>

int main ()
{
	std::string s("10101010"); //ваш "прямой код"
	std::bitset<8> b(s);
	std::cout << b.to_ulong() << std::endl;
	return 0;
}
А лучше всего потратьте (аж!)20-30 долларов на нормальную книгу и занимайтесь по ней.
 
а есть ли bitset.h в turboc 3.0?

вроде нема(
У вас дана переменная, инициализированная копией целочисленного константного литерала. То есть это не двоичное представление числа -161.
почему не двоичное? - для удобства например. и при выводе пользователю например будет казаться что это самое что ни на есть двоичное представление. а то как я мудрую с типами так какая разница? там могла быть и строка. только работа с ней как по мне немного сложнее.

просто мне не известно есть ли стандартная либа для работы в двоичной системе или как называется этот тип.

а этот код на билдере 6?
 
почему не двоичное?
Да потому, что это ЦКЛ. :tehnari_ru_281:

а этот код на билдере 6?
Нет, я использую GCC.

а есть ли bitset.h в turboc 3.0?
Я конечно сам еще мало знаю, но насколько я понимаю что этот заголовок из стандартной библиотеки языка, а ее содержимое вроде как не зависит от компилятора. Хотя, повторюсь, здесь я не уверен, так как до библиотеки еще не дошел.
 
Назад
Сверху