Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / сверхдлинное целое число / 18 сообщений из 18, страница 1 из 1
23.01.2008, 17:10
    #35082711
сверхдлинное целое число
для оперирования (*+) со сверхдлинными целыми числами эффективнее всего использовать массив строк? или есть альтернативные методы?

Учись так, как будто тебе предстоит жить вечно; живи так, как будто тебе предстоит умереть завтра.
Бисмарк
...
Рейтинг: 0 / 0
23.01.2008, 17:46
    #35082862
zloy den
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
побитово?
...
Рейтинг: 0 / 0
23.01.2008, 18:34
    #35083038
temperature457
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Кострюков Артёмдля оперирования (*+) со сверхдлинными целыми числами эффективнее всего использовать массив строк? или есть альтернативные методы?
Эффективнее всего использовать массивы чисел.
...
Рейтинг: 0 / 0
23.01.2008, 19:38
    #35083175
сверхдлинное целое число
zloy denпобитово?
подробнее?
...
Рейтинг: 0 / 0
23.01.2008, 20:18
    #35083224
temperature457
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
И складывать их части побитово.

(c) JDK 1.4.2
Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
    /**
     * Adds the contents of the int arrays x and y. This method allocates
     * a new int array to hold the answer and returns a reference to that
     * array.
     */
     private   static   int [] add( int [] x,  int [] y) {
        // If x is shorter, swap the two arrays
         if  (x.length < y.length) {
             int [] tmp = x;
            x = y;
            y = tmp;
        }

         int  xIndex = x.length;
         int  yIndex = y.length;
         int  result[] =  new   int [xIndex];
         long  sum =  0 ;

        // Add common parts of both numbers
         while (yIndex >  0 ) {
            sum = (x[--xIndex] & LONG_MASK) + 
                  (y[--yIndex] & LONG_MASK) + (sum >>>  32 );
            result[xIndex] = ( int )sum;
        }

        // Copy remainder of longer number while carry propagation is required
         boolean  carry = (sum >>>  32  !=  0 );
         while  (xIndex >  0  && carry)
            carry = ((result[--xIndex] = x[xIndex] +  1 ) ==  0 );

        // Copy remainder of longer number
         while  (xIndex >  0 )
            result[--xIndex] = x[xIndex];

        // Grow result if necessary
         if  (carry) {
             int  newLen = result.length +  1 ;
             int  temp[] =  new   int [newLen];
             for  ( int  i =  1 ; i<newLen; i++)
                temp[i] = result[i- 1 ];
            temp[ 0 ] = 0x01;
            result = temp;
        }
         return  result;
    }
...
Рейтинг: 0 / 0
23.01.2008, 20:18
    #35083225
temperature457
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
(c) JDK 1.4.2
Код: plaintext
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.
31.
32.
33.
    /**
     * Multiplies int arrays x and y to the specified lengths and places
     * the result into z.
     */
     private   int [] multiplyToLen( int [] x,  int  xlen,  int [] y,  int  ylen,  int [] z) {
         int  xstart = xlen -  1 ;
         int  ystart = ylen -  1 ;

         if  (z ==  null  || z.length < (xlen+ ylen))
            z =  new   int [xlen+ylen];

         long  carry =  0 ;
         for  ( int  j=ystart, k=ystart+ 1 +xstart; j>= 0 ; j--, k--) {
             long  product = (y[j] & LONG_MASK) *
                           (x[xstart] & LONG_MASK) + carry;
            z[k] = ( int )product;
            carry = product >>>  32 ;
        }
        z[xstart] = ( int )carry;

         for  ( int  i = xstart- 1 ; i >=  0 ; i--) {
            carry =  0 ;
             for  ( int  j=ystart, k=ystart+ 1 +i; j>= 0 ; j--, k--) {
                 long  product = (y[j] & LONG_MASK) * 
                               (x[i] & LONG_MASK) + 
                               (z[k] & LONG_MASK) + carry;
                z[k] = ( int )product;
                carry = product >>>  32 ;
            }
            z[i] = ( int )carry;
        }
         return  z;
    }
...
Рейтинг: 0 / 0
23.01.2008, 20:28
    #35083246
сверхдлинное целое число
а как разложить-то число из десятичной в двоичную? напоминаю, речь идёт про сверхдлинные числа. у меня исходные данные в десятичной.

Учись так, как будто тебе предстоит жить вечно; живи так, как будто тебе предстоит умереть завтра.
Бисмарк
...
Рейтинг: 0 / 0
23.01.2008, 20:32
    #35083251
temperature457
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Я прикрепил исходники класса, который работает со сверхдлинными целыми числами.
В свое время я пытался разобраться, как это работает, но понял, что мне банально не хватает математического образования.
...
Рейтинг: 0 / 0
23.01.2008, 22:31
    #35083391
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Если пишешь на дотнете то подключи сборку vjslib(кажется), там будет неймспейс вроде java.math. там будет класс BigInteger, думаю он должен нормально работать)
...
Рейтинг: 0 / 0
24.01.2008, 07:08
    #35083592
Самоловских Виталий aka Kefir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
А чем BigInteger или BigDecimal не подходят?
...
Рейтинг: 0 / 0
24.01.2008, 09:29
    #35083732
temperature457
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Самоловских Виталий aka KefirА чем BigInteger или BigDecimal не подходят?
Лично я так понял, что автор собрался кодировать длинные числа самостоятельно :)
...
Рейтинг: 0 / 0
24.01.2008, 13:57
    #35084802
фыв
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Самоловских Виталий aka KefirА чем BigInteger или BigDecimal не подходят?
наверно длиной
...
Рейтинг: 0 / 0
30.01.2008, 14:08
    #35097573
Самоловских Виталий aka Kefir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
фыв Самоловских Виталий aka KefirА чем BigInteger или BigDecimal не подходят?
наверно длиной
А что не так с длиной?
...
Рейтинг: 0 / 0
30.01.2008, 21:03
    #35098913
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Один тип - для целых, другой - для дробно-десятичных.
...
Рейтинг: 0 / 0
01.02.2008, 15:01
    #35104013
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Самоловских Виталий aka Kefir фыв Самоловских Виталий aka KefirА чем BigInteger или BigDecimal не подходят?
наверно длиной
А что не так с длиной?Маленькая, до 8-ми байт.

temperature457В свое время я пытался разобраться, как это работает, но понял, что мне банально не хватает математического образования.Это просто сложение 2-х целых чисел в столбик :-)

Кострюков Артёма как разложить-то число из десятичной в двоичную? напоминаю, речь идёт про сверхдлинные числа. у меня исходные данные в десятичной.Можно этот пример изменить на сложение чисел, записанных в виде десятичных строк.

Нужно только заменить типы int на char, long на short и практически всё.
...
Рейтинг: 0 / 0
02.02.2008, 10:45
    #35105693
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
Насколько мне известно, BigInteger ограничен только объемом памяти, я лично с помощью него оперировал числами во много тысяч знаков длинной
...
Рейтинг: 0 / 0
02.02.2008, 12:05
    #35105753
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
alexeyvg Самоловских Виталий aka Kefir
А что не так с длиной?Маленькая, до 8-ми байт.
BigInteger <> BigInt
...
Рейтинг: 0 / 0
05.02.2008, 11:45
    #35110193
Самоловских Виталий aka Kefir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сверхдлинное целое число
alexeyvg Самоловских Виталий aka Kefir фыв Самоловских Виталий aka KefirА чем BigInteger или BigDecimal не подходят?
наверно длиной
А что не так с длиной?Маленькая, до 8-ми байт.
Я на Java программирую :P
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / сверхдлинное целое число / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]