Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
vovoch
2 / 2 / 0
Регистрация: 07.12.2011
Сообщений: 25
#1

Переписать функцию с C на C# - C#

17.04.2013, 19:38. Просмотров 272. Ответов 0
Метки нет (Все метки)

Есть у Шнайера функция, реализующая мультипликативную инверсию:

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
static uint16
mulInv(uint16 x)
{
       uint16 t0, t1;
       uint16 q, y;
       if (x <= 1)
              return x;     /* 0 and 1 are self-inverse */
       t1 = 0x10001L / x;   /* Since x >= 2, this fits into 16 bits */
       y = 0x10001L % x;
       if (y == 1)
              return low16(1-t1);
       t0 = 1;
       do {
              q = x / y;
              x = x % y;
              t0 += q * t1;
              if (x == 1)
                     return t0;
              q = y / x;
              y = y % x;
              t1 += q * t0;
       } while (y != 1);
       return low16(1-t1);
} /* mukInv */
Я так и не смог найти в интернете, что такое low16. Предположение - взять младшие 16 бит числа.
В итоге я получил вот такую функцию:

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
private static readonly int MASK = 0xffff;
private static readonly int BASE = 0x10001;
 
private ushort mulInv(ushort x)
        {
            ushort t0, t1, q, y;
 
            if (x < 2)
            {
                return x;
            }
            t0 = 1;
            t1 = (ushort)(BASE / x);
            y = (ushort)(BASE % x);
            
            while (y != 1)
            {
                q = (ushort)(x / y);
                x = (ushort)(x % y);
                t0 = (ushort)((t0 + (t1 * q)) & MASK);
                if (x == 1)
                {
                    return t0;
                }
                q = (ushort)(y / x);
                y = (ushort)(y % x);
                t1 = (ushort)((t1 + (t0 * q)) & MASK);
            }
            return (ushort)((1 - t1) & MASK);
        }
Но работает она не верно... Что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать функцию с C на C# (C#):

Переписать функцию из FoxPro на C# - C#
Доброго времени суток. Помогите переписать функцию из FoxPro на C#. Сам застрял на этом: ASC(SUBSTR(itemkey, i, 1))&gt;ASC('f') Код на...

Переписать функцию с Python на язык C# - C#
Помогите метод переписать на C# этот: import requests from urllib.parse import urljoin from lxml.html import fromstring def...

Переписать функцию с С на C++\Qt - C++ Qt
Нужно переписать функцию добавления заголовка wav в файл. Вот функция, которая была: int rawToWav(const char *rawfn, const char *wavfn,...

Переписать функцию - jQuery
Приветствую всех. Не подскажите, как эту функцию переписать на чистый js? $(document).ready(function() { $('body').addClass('js');...

Переписать процедуру на функцию - Turbo Pascal
uses crt; var mas:array of real; i,j,x,y:integer; begin clrscr; write('Кол-во строк: '); readln(x); write('Кол-во столбцов: ');...

Переписать функцию с Паскаля на С++ - C++
Есть функция для сортировки списка вставками на Паскале. Нужно переписать функцию на С++. function sort(head1:List):List; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 19:38
Привет! Вот еще темы с ответами:

Переписать функцию с Pascal на C# - C#
Как написать эту функцию C# Эта функция написана packal uses GraphABC; const T=35; Go=1e+10; kt=0.02575*T/300; function...

Переписать функцию с C++ на ассемблер - Assembler
Всем доброго времени суток! В курсовой работе по ООП на c++ возникла задача по реализации функции перевода первого символа строки в...

Переписать с С# на Матлаб функцию - Matlab
Здравствуйте, помогите пожалуйста переделать эту функцию в матлба M-File static double function(double xValues) { ...

Переписать процедуру в функцию - PascalABC.NET
Не получается правильно переписать процедуру в функцию, помогите пожалуйста. var n:longint; procedure sh(n:longint); var...


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

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

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