Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2007, 20:09   #1
Osi@
 
Аватар для Osi@
 
Регистрация: 01.10.2007
Сообщений: 7
По умолчанию перевод из 10-чной в бинарную систему.

спасибо что решили помочь! суть вот в чём: пишу генератор псевдослучайных последовательностей чисел, работать он будет в двоичной системе. а беда в том что я не знаю, как задать числам двоичный формат для выполнения мат. операции в delphi 7. мммммм... сам не понял что написал...
проще: кто знает, подскажите как заставить delphi 7 воспринимать и делать операции с вводимым пользователем двоичным кодом.
надо полагать, решения у этой задачи нет?
заранее спасибо.

Ultima ratio requem (лат.- последний довод королей)

Последний раз редактировалось Osi@; 03.10.2007 в 21:17.
Osi@ вне форума Ответить с цитированием
Старый 03.10.2007, 22:47   #2
MadDog__
Пользователь
 
Аватар для MadDog__
 
Регистрация: 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.
MadDog__ вне форума Ответить с цитированием
Старый 04.10.2007, 02:57   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Есть такие стандартные функции:
HexToBin - преобразование из 10-й в двоичную и
обратно BinToHex...
Поможет?
mihali4 вне форума Ответить с цитированием
Старый 04.10.2007, 16:30   #4
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

[OFF]
mihali4, Привет !!
[/OFF]
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 04.10.2007, 16:43   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

{OFF} ААА! Здорово mihali4!! {/OFF}
Inttohex потом hextobin. Можно и сделать прогу такую, чтоб переводила как на уроке информатики ты переводишь
zetrix вне форума Ответить с цитированием
Старый 04.10.2007, 20:33   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

[OFF]
Всем-всем привет !!
[/OFF]
mihali4 вне форума Ответить с цитированием
Старый 04.10.2007, 22:13   #7
Surgeon
Форумчанин
 
Регистрация: 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 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума Ответить с цитированием
Старый 04.10.2007, 22:53   #8
MadDog__
Пользователь
 
Аватар для MadDog__
 
Регистрация: 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 рулит
MadDog__ вне форума Ответить с цитированием
Старый 05.10.2007, 19:27   #9
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Цитата:
BinNumber:= BinNumber shl 1; на сколько я понял ты тут просто сдвигаешь число на 1 бит т.е умнажаешь на 2

я сдвигом задвигал 1 или 0 в переменную answ последовательно в зависимости от значения в типа char.
Цитата:
т.е на каждом шаге цикла я запихивал в answ 1 или 0 взависимости от значения char
Предложил те же яйца, только в профиль (на OP).
-----
@Osi@ - ты нашел что искал?
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем

Последний раз редактировалось Surgeon; 05.10.2007 в 19:31.
Surgeon вне форума Ответить с цитированием
Старый 05.10.2007, 20:27   #10
MadDog__
Пользователь
 
Аватар для MadDog__
 
Регистрация: 02.10.2007
Сообщений: 12
По умолчанию

да так и ано и есть
Francias and Germany rap рулит
MadDog__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести в шестнадцатитричную систему. Манжосов Денис :) Помощь студентам 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