| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Создать своё исчисление! |
| Автор: steven13 3.4.2005, 06:37 |
| Нужно создать свой тип целого числа. В котором розряд состоит не из 10 числ а из восьми. Как этого можно добится: 0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,30,31...75,76,77,100,101,102,103... Так что-бы потом можно было с ним делать операции наналогично int. |
| Автор: chipset 3.4.2005, 06:47 |
| Создать свой класс, перегрузить операторы =,+,-,==,*,/ и прочие, проверяя на (0<i<8) при каждом вычислении, и запрограммировать восьмеричные операции. Добавлено @ 06:47 Модератор:перенесено из C++:Системное программирование и Win32Api |
| Автор: Domestic Cat 3.4.2005, 06:50 |
| Это кому нужно, партии и правительству? А о восьмеричной системе счисления слыхал? http://www.gamaun.su/hsx/c/0002.html |
| Автор: steven13 3.4.2005, 07:30 | ||||
Спасибо за ссылку, лучше стал понимать что нужно. Теперь хоть могу обяснить нормально. У меня дурдом с этими числами. Есть файл, в которов пишется в 16-ритчной системе, но значения там в 8-ричной системе, (максимум 7А).
Нужно его открыть, перевести в десятеричную систему, пользователь (или програма) меняет пару цыфру, а потом нужно в обратном порядке записать обратно. Если есть советы, внимательно выслушаю. |
| Автор: LuckLess 3.4.2005, 10:14 | ||||
чтото тупняк напал. в эту строчку пытался вЪехать минут 10. Можно поподроднее тут плз? Добавлено @ 10:15
как это 7A -> это значение в 8-ой системе , когда оно 16-ое. ух. щас рассплавлюсь.. |
| Автор: steven13 3.4.2005, 16:56 |
| Вот число в 10-ричной - 200 Вот это число в 8-ричной - 310 Вот это число в 16 -ричной - C8 А ВОТ ТАК ОНО ЗАПИСАНО: 4E 01 Обратно переводится: (4Е= 78) + (01=122 ) = 200 |
| Автор: LuckLess 3.4.2005, 17:17 |
| 01=122 -- это как? |
| Автор: De Gray 3.4.2005, 17:19 |
| 0100- либо 64 либо 256, но уж никак не 122, в крайнем случае 121 |
| Автор: steven13 3.4.2005, 17:43 | ||
Одна 16 ричная ячейка может принимать значения: от 00 до 7A если значение больше 122 (7A), на пример 123 то программа не пишет его как 7B, а начинает использовать уже вторую ячейку!!! И пишет его 00 01. |
| Автор: steven13 3.4.2005, 18:00 | ||
Возможно так у нормальных людей!!!! Но здесь програма пишет в одну ячейку не больше 7А (включительно) то-есть 122. Моё предположение, что вводить данные нужно в десятеричной системе оказалось ошибочно. Вводить их нужно в восьмеричной системе. То-есть использовать 8 и 9 НЕЛЬЗЯ!!! Это упрощает задачу. Ципочка получаэтся такая: 1. Вовожу значение в восмеричной системе. 2. Программа их пишет в файл в "хитророй" Неполной 16-ричной системе. 1. Нужно считать это значение. 2. Декодировать в 8-ричную систему. 3. Работать с ним в 8-ричной системе. 4. Сохранить назад в том ненормальном формате. Вернулись к тому с чего начинали, нужно заставить Си правильно заботать с цифрами в восьмеричной системе. |
| Автор: pablo 4.4.2005, 08:17 | ||
| Если пишеш в файл или на екран, то для подобных целей можно использовать модификаторы потоков (hex, oct, dec). Потоки С++ в этом отношении достаточно умные и поймыт что тут имеем дело с 16 ричными, 8 ричными и 10 сыфрами. Просто при выводе надо указать что за числа вы выводите:
cout << hex << 17 << endl; 11 cout << oct << 9 << endl; 11 cout << dec << 11 << endl; 11 [/code] |