|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.10.2007, 20:09 | #1 |
Регистрация: 01.10.2007
Сообщений: 7
|
перевод из 10-чной в бинарную систему.
спасибо что решили помочь! суть вот в чём: пишу генератор псевдослучайных последовательностей чисел, работать он будет в двоичной системе. а беда в том что я не знаю, как задать числам двоичный формат для выполнения мат. операции в delphi 7. мммммм... сам не понял что написал...
проще: кто знает, подскажите как заставить delphi 7 воспринимать и делать операции с вводимым пользователем двоичным кодом. надо полагать, решения у этой задачи нет? заранее спасибо. Ultima ratio requem (лат.- последний довод королей) Последний раз редактировалось Osi@; 03.10.2007 в 21:17. |
03.10.2007, 22:47 | #2 |
Пользователь
Регистрация: 02.10.2007
Сообщений: 12
|
вот чувак я сделал на С++ и АSMе
переведи на Делфи т.к я не знаю его я его преобразовал в целочисленный тип либо оставляй его как есть массив или если надо их фактические значение mas[i]=mas[i]-0x30; #include <iostream> #include <string.h> int main() { int answ=0, tmp; char mas[256]; std::cin.get(mas, 256); функция считывания символов tmp=strlen(mas); функция подсчета символов до встречи нулевого символа for(int i=0; i<tmp; i++) { if(mas[i]==0x31) __asm { mov eax, 0xFFFFFFFF; shld answ, eax, 1; } else __asm { xor eax, eax; shld answ, eax, 1; } } std::cout<<answ; return 0; } удачи
Francias and Germany rap рулит
Последний раз редактировалось MadDog__; 03.10.2007 в 22:57. |
04.10.2007, 02:57 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Есть такие стандартные функции:
HexToBin - преобразование из 10-й в двоичную и обратно BinToHex... Поможет? |
04.10.2007, 16:30 | #4 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
[OFF]
mihali4, Привет !! [/OFF]
Берегите друг друга!
|
04.10.2007, 16:43 | #5 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
{OFF} ААА! Здорово mihali4!! {/OFF}
Inttohex потом hextobin. Можно и сделать прогу такую, чтоб переводила как на уроке информатики ты переводишь |
04.10.2007, 20:33 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
[OFF]
Всем-всем привет !! [/OFF] |
04.10.2007, 22:13 | #7 |
Форумчанин
Регистрация: 04.10.2007
Сообщений: 106
|
Если я правильно понял нужна функция типа
StringToBinary(SourceString:string) :integer; преобразующая 1 и 0 из исходной строки в двоичное число? предлагаю такой вариант: var i,ssLen,BinNumber,CurrentDigit:inte ger; buf:string;//можно и не стринг а char цикл перебора всех символов исходной строки ssLen:=(Length(SourceString)-1);//длина строки BinNumber:=0; for i:=0 to (Length(SourceString)-1) do begin buf:=SourceString[ssLen-i]; //забираем в буфер крайний символ справа CurrentDigit:= IntToStr(buf); //получаем либо 1 либо 0 (можно добавить проверку вводимых символов) BinNumber:= BinNumber shl 1; // сдвигаем формируемое число на 1 бит влево (аналогично умножению на 2) BinNumber:=BinNumber or CurrentDigit; // выполняем логическую операцию "or" между собираемым числом и добавляемым двоичным разрядом. Объеъдинение идет в старшем бите формируемого числа. После shl там должен быть 0. end; BinNumber должно в итоге содержать целое число, преобразованное из введенного текста. Типы byte/integer/word и др. это ж и есть двоичные значения. Если где-то ошибся исправьте.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем |
04.10.2007, 22:53 | #8 |
Пользователь
Регистрация: 02.10.2007
Сообщений: 12
|
BinNumber:= BinNumber shl 1; на сколько я понял ты тут просто сдвигаешь число на 1 бит т.е умнажаешь на 2
я сдвигом задвигал 1 или 0 в переменную answ последовательно в зависимости от значения в типа char. к примеру число ввел я число в двоичной системе 10010101 его строчный вид 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x30, 0x31 вычислил длину строки 8 символов в цикле задвигаю в переменную по 1 биту номер цикла) 1. answ = 1 mov eax, 0xFFFFFFFF; shld answ, eax, 1; т.е задвигаем в answ 1 2. answ = 10 xor eax, eax; обнуление регистра eax shld answ, eax, 1; т.е задвигаем в answ 0 3. answ = 100 xor eax, eax; shld answ, eax, 1; 4. answ = 1001 mov eax, 0xFFFFFFFF; shld answ, eax, 1; 5. answ = 10010 xor eax, eax; shld answ, eax, 1; 6. answ = 100101 mov eax, 0xFFFFFFFF; shld answ, eax, 1; 7. answ = 1001010 xor eax, eax; shld answ, eax, 1; 8. answ = 10010101 mov eax, 0xFFFFFFFF; shld answ, eax, 1; в результате answ содержит число 149 т.е на каждом шаге цикла я запихивал в answ 1 или 0 взависимости от значения char
Francias and Germany rap рулит
|
05.10.2007, 19:27 | #9 | ||
Форумчанин
Регистрация: 04.10.2007
Сообщений: 106
|
Цитата:
Цитата:
----- @Osi@ - ты нашел что искал?
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем Последний раз редактировалось Surgeon; 05.10.2007 в 19:31. |
||
05.10.2007, 20:27 | #10 |
Пользователь
Регистрация: 02.10.2007
Сообщений: 12
|
да так и ано и есть
Francias and Germany rap рулит
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевести в шестнадцатитричную систему. | Манжосов Денис :) | Помощь студентам | 7 | 05.05.2008 00:35 |
Из 10-ой в 2-ую систему на TASM | Alter | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 21.02.2008 06:28 |
перевод из 4-ной в 3-ную систему счисления | Mike07 | Помощь студентам | 1 | 07.10.2007 18:53 |