Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
sarsmen
1 / 1 / 1
Регистрация: 22.12.2016
Сообщений: 131
1

Реверс генератора

23.10.2017, 17:26. Просмотров 188. Ответов 4
Метки нет (Все метки)

Помогите переписать(написать) обратный реверс, что бы из полученного получалось исходное. Спасибо.
0
Вложения
Тип файла: rar генри.rar (295.1 Кб, 10 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2017, 17:26
Ответы с готовыми решениями:

реверс строки
короче, у меня есть строка.. ее надо перевести наоборот. типа было ЛОХ стало...

Реверс строк (в memo)
Нужно сделать реверс строк. Допустим имеются в том же memo строки: В...

Реализация QR генератора
Добрый день! :senor: Очень нужна помощь O_o Кто нибудь реализовал генератор...

Реверс строки
Здравствуйте. В библиотеку обработки строк С++ и в Lua включены функции...

Реверс строки
Привет ребят, вообщем я первокурсник и только разбираюсь с основами, у меня...

4
sarsmen
1 / 1 / 1
Регистрация: 22.12.2016
Сообщений: 131
25.10.2017, 18:23  [ТС] 2
Некто не поможет?
0
gunslinger
случайный прохожий
1326 / 841 / 330
Регистрация: 20.07.2013
Сообщений: 2,376
25.10.2017, 22:46 3

Не по теме:

Насчет НЕКТО не знаю, но за уровень грамотности нового поколения пора уже всех причастных лиц на кол сажать.


Теперь пройдемся по коду. Сам писал или у кого взял?
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
unsigned int notand(unsigned int a,unsigned int b)
{
    return (~a)&(~b);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    unsigned int code;
    unsigned int a1;
    unsigned int a2;
    unsigned int a3;
    unsigned int pcode;
    unsigned int m1;
    unsigned int m2;
    unsigned int t1;
    unsigned int zetcode;
 
    code=StrToInt(Edit1->Text);
    a1=notand(code,code);
    a2=notand(a1,0x532ec2a7);
    a3=notand(code,0xabd12d48);
    pcode=notand(a2,a3);
    m1=pcode*0x65bcd16;
    m1=((m1&0xffff0000)>>16)|((m1&0xffff)<<16);
    m2=m1*0x0dfb35d3;
    m2=m2%100000000;
    t1=notand(m2,m2);
    zetcode=0xffffffff-t1;
    Edit2->Text=zetcode;
}
Строго говоря, твоя задача в общем виде невыполнима. Операция получения остатка от деления % необратима.
Хотя используются беззнаковые целые числа. Но тогда нет смысла в строке 26. Или как-то надо учитывать переполнение результатов некоторых операций?

По поводу функции notand. Обратной операцией для ~ является она же (если не ошибаюсь).
Если используется & и два операнда одинаковые, то результат - тот же самый операнд.
Короче, пробуй проделать все действия в "обратном порядке" с учетом логики. А там может и другой "некто" подключится.
0
sarsmen
1 / 1 / 1
Регистрация: 22.12.2016
Сообщений: 131
26.10.2017, 02:38  [ТС] 4
Не могу понять как в обратном этот код состряпать, пробывал не получается, знаний не хватает.
0
gunslinger
случайный прохожий
1326 / 841 / 330
Регистрация: 20.07.2013
Сообщений: 2,376
27.10.2017, 01:17 5
Большой вопрос, как из
C++
1
pcode=notand(a2,a3);
получить a2 и a3, зная pcode.

Набросок (см. комментарии):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    unsigned int code, a1, a2, a3, pcode, m1, m2, t1, zetcode;
 
    zetcode=StrToInt(Edit2->Text);
    t1=0xffffffff-zetcode;
    m2=notand(t1,t1);
 
    m1=m2/0x0dfb35d3;
    m1=((m1&0xffff0000)>>16)|((m1&0xffff)<<16);
    pcode=m1/0x65bcd16;
 
    // невозможно получить m2 из m2=m2%100000000, если m2 >= 100000000
 
    a2=notand(pcode,a3);
    a3=notand(pcode,a2);
    // тогда
    a2=notand(pcode,notand(pcode,a2));
    a3=notand(pcode,notand(pcode,a3));
    // и  нужно как-то выразить a2 или a3 через pcode
 
    code=notand(a3,0xabd12d48);  // есть вероятность переполнения
    a1=notand(a2,0x532ec2a7);  // здесь аналогично
    code=notand(a1,a1);
    Edit3->Text=code;
Требуется из
C++
1
2
    a2=notand(pcode,notand(pcode,a2));
    a3=notand(pcode,notand(pcode,a3));
извлечь a2 и a3. Тут нужны мастера по битовым операциям.
Мой мозг здесь требует добавить ему оперативки, но тип имеющейся памяти не подходит (нужно DDRsmart, а есть только DDRdumb).

Добавлено через 8 минут
То есть проблема такова - решить задачу вида
Код
x = (~y) & (~((~y) & (~x)))
(найти x, зная y)
0
27.10.2017, 01:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2017, 01:17

Реверс числа
Напишите функцию, выполняющую реверсию целого положительного числа, не...

Реверс слова
Написать программу, которая может быть переводчиком в «Королевстве кривых...

Реверс PCB
Господа ! А нет ли в природе такого инструмента, который позволяет строить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru