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

Перевод из 16 сс в 4 сс - C++

Восстановить пароль Регистрация
 
Havk15
Сообщений: n/a
24.01.2013, 19:28     Перевод из 16 сс в 4 сс #1
Помогите пожалуйста написать программу на C++ по переводу из 16 сс в 4 с дробными числами, а то я не очень понимаю как это сделать, недавно начал изучать этот язык.

Добавлено через 1 час 16 минут
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
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{double Number, b, c;
int a, d, i, j=0, k;
int A[10], B[100];
cin>>Number; //Число, которое нужно перевести
a=int (Number); //Целая часть
b=Number-a;
c=b; //Дробная часть
for(i=0;i<9;i++)
{
    c=c*4;  A[j]=int (c); j++; if(c==0) i=9;  c=c-int (c);//Перевод дробной части
}
 
i=0;
while (a!=0)
{
    B[i]=fmod(a,4); i++; a=a/4; //Перевод целой части
}
for(k=i-1;k>-1;k--)
{
    cout<<B[k];
}
cout<<".";
for(i=0;i<j-1;i++)
{
   cout<<A[i];
}
    return 0;
}
вот набросал перевод из 10 в 4, а как из 16 не знаю помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 19:28     Перевод из 16 сс в 4 сс
Посмотрите здесь:

Перевод на С++ C++
C++ перевод в С
Перевод из 2 в 10 сс C++
C++ перевод из с++ в с
C++ Перевод
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2013, 19:30     Перевод из 16 сс в 4 сс #2
а что такое четверичная система с дробными числами? 16-ти ричная система - это просто способ отображения двоичной системы, в двоичной - вещественные числа нормализуют, что вам конкретно нужно сделать.
Стандартный способ - делим число в исходной системе на основание новой, остатки от деления записываем в обратном порядке. Для дробной части, наоборот - умножают.
Havk15
Сообщений: n/a
24.01.2013, 20:35     Перевод из 16 сс в 4 сс #3
А 16 как задать можно?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2013, 21:48     Перевод из 16 сс в 4 сс #4
Вы имеет ввиду - ввод, вывод и представление данных? Или что?
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
24.01.2013, 23:12     Перевод из 16 сс в 4 сс #5
Havk15, 16 - это числа 0...9 и ,буквы A,B,C,D,E,F.А - это 10 ,если доходчиво B - 11 и т.д.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2013, 23:55     Перевод из 16 сс в 4 сс #6
Цитата Сообщение от Havk15 Посмотреть сообщение
А 16 как задать можно?
смотрите, если вам чисто теоретически, то 16-ти ричная система мало чем отличается от любой другой позиционной,
до запятой "степени" - веса разрядов растут справа налево: 16n+16n-1+...+161+160вес разряда умножается на число щаписанное в этом разряде, еапример 12316=1*162+2*161+3*160=1001000112 или 29110.
После запятой, весы разрядов такие 1/160+1/162..., причем число знаков после запятой опреляется точностью и машинным представлением.
С точки ззрения внутреннего формата компьютера, то здесь определяется все стандартом IEEE-754.
Если вам просто в лоб нужно перевести, то делайте по стандартной схеме целая часть умножение, дробная делением. Может сделать кросс-перевод 16->10->4 или 16->2->4 (1 разряд 4-го =2 разрядам двоичного), что еще проще, и не нужно делить. Само представление вам подсказали постом выше. 16->2->4 - я бы делал так, если у вас нет особых требований в задании. В противном случае, вам нужно определять 16-ричном виде арифметические операции и писать свой парсер этого всего.

Добавлено через 4 минуты
Нпример, 1A.3C16=0001 1010 . 0011 10112, если не использовать приведение чисел к нормальному виду.
Ввод и вывод целых 16-ричных реализован средствами языка, если вводить наподобие 1A.3C, нужно самому разбирать строку, т.е. читать в строку и анализировать ее.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
24.01.2013, 23:58     Перевод из 16 сс в 4 сс #7
Цитата Сообщение от vua72 Посмотреть сообщение
Может сделать кросс-перевод 16->10->4 или 16->2->4
на хрена козе баян?
4 эта тоже степень двойки как и 16
бей байт на четыре части (полубайт на две и все)
например число 15
0xF (1111)= (11)(11) 33 в четверичной

примерно так
C++
1
2
3
4
5
6
while(n)
 {
   printf("%d",n&0x03)
   n=n>>2;
 
 }

Не по теме:

правда в моем примере число задом наперед выведется

vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 00:04     Перевод из 16 сс в 4 сс #8
Цитата Сообщение от ValeryS Посмотреть сообщение
на хрена козе баян?
а не смущает, что речь идет о вещественных числах???
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
25.01.2013, 00:06     Перевод из 16 сс в 4 сс #9
Цитата Сообщение от vua72 Посмотреть сообщение
а не смущает, что речь идет о вещественных числах???
и что
они в памяти не двоичным образом лежат?
для шеснадцетерички берется четыре разряда
для четырырехрички берем два
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 00:08     Перевод из 16 сс в 4 сс #10
Ввод-вывод дробных 16-ричных и дробных 4-ричных не подскажите
Цитата Сообщение от vua72 Посмотреть сообщение
16->2->4 - я бы делал так
ничего? И чем это отличается от вашего замечания?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
25.01.2013, 00:17     Перевод из 16 сс в 4 сс #11
Цитата Сообщение от vua72 Посмотреть сообщение
Ввод-вывод дробных 16-ричных и дробных 4-ричных не подскажите
не подскажу
потому что не знаю в каком формате они у ТС лежат
если в IEEE то там в 80 битах( я про double) закодирована и порядок и мантисса и знак
так что прямым выводом не сделать
и не все десятичные дроби приводятся к конечным двоичным дробям ( например 0.3)
так что задание конкретней
тогда и будет конкретное решение

Добавлено через 1 минуту
Цитата Сообщение от vua72 Посмотреть сообщение
И чемэто отличается от вашего замечания?
тем что шестнадцатеричное не надо приводить к двоичному
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 00:31     Перевод из 16 сс в 4 сс
Еще ссылки по теме:

C++ Перевод из C в С++
Перевод с С на С++ C++
Перевод из C# в С++ C++

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

Или воспользуйтесь поиском по форуму:
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 00:31     Перевод из 16 сс в 4 сс #12
16-10-4 или 16-2-4 ему понадобится, если он захочет делать через деление и умножение по стандартному алгоритму, т.к. для этих систем счисления эти операции определены.
вообще-то, double будет 64 разрядов, у майкрософта, например, и long double просто синоним double.
Ну и по заданию согласен, совершенно нет конкретики.
Yandex
Объявления
25.01.2013, 00:31     Перевод из 16 сс в 4 сс
Ответ Создать тему
Опции темы

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