|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.02.2016, 16:01 | #1 |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
Системы счисления
Привет!
Задача: есть массив из unsigned int, в нём хранится БОЛЬШОЕ число в системе счисления 2^32. Необходимо перевести его в 10 систему счисления и вернуть в виде строки. Пусть сейчас сейчас массив насчитывает 16 элементов, число может составлять 512 бит=32*16. Перевести в двоичную с.с не проблема. Если использовать стандартный алгоритм типа 2^0+2^1+2^2 + .. то при переводе в десятичную довольно быстро возникает переполнение. Как можно решить задачу? P.s сторонние библиотеки не интересуют |
11.02.2016, 16:27 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Написать алгоритм деления.
|
13.02.2016, 13:06 | #3 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Как звучит оригинал задания? Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
15.02.2016, 16:08 | #4 | |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
Цитата:
История такая: мне понадобилась длинная арифметика в с++. Длинное число представляется в виде массива. Но мне необходимо иметь доступ к элементам массива. Понятно, что можно взять готовую библиотеку. Я посмотрел в исходники GMP. Из коробки доступа к элементам я не имею. Можно поизвращаться, но не факт, что потом в ходе вычислений приложение будет работать корректно. Поэтому было принято решение о создании собственного велосипеда. Почему 2^32? Это было навеяно топиком Более того, в GMP скорее всего тоже в 2^32. |
|
15.02.2016, 16:18 | #5 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Тогда пиши класс, который будет работать с такими числами.
Только для отладки сделай основание системы счисления свойством-переменной и отлаживай методы на читабельных основаниях (2...16). Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
15.02.2016, 16:24 | #6 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Хотя я, хоть убей, не понимаю, зачем такую вещь использовать на практике.
Ведь, один хрен, все операции будут идти в двоичном коде. Не проще юзать строковую длинную арифметику? Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
15.02.2016, 17:06 | #7 | |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
Цитата:
Но при этом как искать числа вида (2^32)^8, а также саму сумму? На ум приходит использовать строки. Хранить в строковом массиве предвычисленные значения (2^32)^1, (2^32)^2 ... а потом поразрядно сделать сложение строк для получения итогового результата. Мне необходимо быстро вычленять из произвольного чиста куски определенного размера, несколько байт. Если хранить в строках в 10 сс, то тогда как вычленять их них скажем последние 4 байта, последние 8 байт числа? |
|
15.02.2016, 17:14 | #8 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Кстати, и строки не нужны, просто юзай длинный динамический массив байт. И ещё: оч числах каких порядков речь идёть? Всё, я домой пошёл. Минут через 20 вернусь. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 15.02.2016 в 17:16. |
|
15.02.2016, 17:44 | #9 | |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 440
|
Цитата:
Вместо массива возьму наверное, vector. |
|
15.02.2016, 17:55 | #10 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает преобразование кода из одной системы счисления в ID в другой системе счисления | Ultran | PHP | 1 | 09.11.2013 21:15 |
системы счисления | kat308 | Помощь студентам | 8 | 21.02.2013 09:48 |
Системы счисления | counter | Свободное общение | 9 | 12.10.2011 18:15 |
Системы счисления c++ | Kholmansky | Помощь студентам | 7 | 11.09.2011 06:10 |