Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
27.03.2015
Размер:
397.31 Кб
Скачать

Пакет java.math Класс BigInteger (1)

Вместе с классами-оболочками (и классом java.lang.Math) удобно рассмотреть классы для работы со сколь угодно большими числами из пакета java.math.

Все примитивные целые типы имеют ограниченный диапазон значений. В целочисленной арифметике Java нет переполнения, целые числа приводятся по модулю, равному диапазону значений.

Для того чтобы было можно производить целочисленные вычисления с любой разрядностью, имеется класс java.math.Biginteger. Он расширяет класс Number, следовательно, в нем переопределены методы doubleValue( ), f loatValue( ), intValue( ), iongVaiue( ). Методы byteValue( ) и shortValue( ) не переопределены, а

прямо наследуются от класса Number (а в нем они просто возвращают результат сужающего преобразования значения intValue( ) ).

Экземпляры класса хранят константу (как у класса String), соответственно, действия с объектами класса Biginteger не приводят ни к переполнению, ни к

приведению по модулю. В качестве результата просто возвращается новый экземпляр класса, содержащий полный результат. Значения хранятся в двоичной форме с дополнительным кодом.

Три статических константы – BigInteger.ZERO, BigInteger.ONE и BigInteger.TEN могут

использоваться как нуль, единица и число 10 в любых операциях с объектами класса

Biginteger.

Перед выполнением любой операции числа выравниваются по длине путем распространения знакового разряда в меньшем по размеру числе.

Пакет java.lang Методы класса BigInteger (1)

Большинство методов являются статическими и моделируют целочисленные

операции и функции, возвращая объект класса BigInteger:

static BigInteger abs ( ) возвращает объект, содержащий абсолютное значение числа, хранящегося в данном объекте this

static BigInteger

add( x )

возвращает результат операции this.value + х

static BigInteger

and( x )

возвращает результат операции this.value & х

static BigInteger

andNot( х )

возвращает результат операции this.value & (~х)

static BigInteger

divide( х )

возвращает результат операции this.value / х

static BigInteger

divideAndRemainder( х )

возвращает массив из двух объектов класса Biginteger,

 

 

содержащих частное и остаток от деления this.value на х

static BigInteger gcd( x )

возвращает наибольший общий делитель абсолютных значений объекта this.value и аргумента х

static BigInteger

mах( х )

наибольшее из значений объекта this.value и аргумента х

static BigInteger

min( x )

наименьшее из значений объекта this.value и аргумента х

static BigInteger

mod( х )

остаток от деления объекта this.value на аргумент х

static BigInteger

modInverse( х )

остаток от деления числа, обратного объекту this.value, на

 

 

аргумент х

Пакет java.lang Методы класса BigInteger (2)

Большинство методов класса BigInteger моделируют целочисленные операции и функции, возвращая объект класса BigInteger:

static BigInteger

modPow( n, m )

остаток от деления this.value, возведенного в степень n, на m

static BigInteger

multiply( х )

возвращает результат операции this.value * х

static BigInteger

negate( )

перемена знака числа, хранящегося в объекте

static BigInteger

not( )

возвращает результат операции –this.value

static BigInteger

оr( х )

возвращает результат операции this.value | х

static BigInteger

pow( int n )

возвращает результат операции возведения числа, хранящегося

 

 

в объекте, в целочисленную степень n

static BigInteger

remainder( х )

возвращает результат операции this.value % х

static BigInteger

shiftLeft( int n )

возвращает результат операции this.value << n

static BigInteger

shiftRight( int n )

возвращает результат операции this.value >> n

static BigInteger

signum( )

–1, если this.value < 0; 0, если this.value == 0; иначе 1

static BigInteger

subtract( х )

операция this.value – х

static BigInteger

хоr( х )

операция this.value ^ х

Пакет java.lang Методы класса BigInteger (3)

Есть специфические методы:

int

bitCount( )

Возвращает количество бит, не совпадающих со знаковым битом

int

bitLength( )

Возвращает минимально необходимое количество бит для

 

 

представления числа (без знакового)

BigInteger

clearBit( int n )

Возвращает новый экземпляр, в котором указанный бит установлен

 

 

в 0

int

compareTo( BigIntege

Сравнение собственного значения с заданным аргументом:

 

r val )

возвращает -1 или 0 или 1

BigInteger

flipBit( int n)

Возвращает новый экземпляр, в котором указанный бит

 

 

инвертирован

int

getLowestSetBit()

Возвращает индекс первого младшего бита, равного 1

boolean

isProbablePrime( int c

Возвращает true, если экземпляр содержит простое (вероятно)

 

ertainty )

число (или аргумент certainty <=0) и false если точно не простое

BigInteger

nextProbablePrime( )

Возвращает ближайшее большее возможно простое число

Пакет java.lang Методы класса BigInteger (4)

Еще специфические методы класса BigInteger:

static

probablePrime( int bit

Возвращает возможно простое число размером bitLength бит;

BigInteger

Length, Random rnd )

аргумент rnd используется для случайного выбора

BigInteger

setBit( int n )

Возвращает новый экземпляр, в котором указанный бит установлен

 

 

в 1

boolean

testBit( int n )

Возвращает true если и только если указанный бит числа равен 1

byte[]

toByteArray( )

Преобразует число в массив байт

static

valueOf( long val )

Возвращает экземпляр BigInteger, содержащий значение, равное

BigInteger

 

аргументу

Класс Biginteger содержит также полный набор обычных методов:

equals(), hashCode(), toString(), intValue(), longValue(), floatValue(), doubleValue().

В пакете java.math есть еще класс BigDecimal, имеющий похожие методы для реализации арифметических операций и ряд специфических методов. Детально этот класс здесь не рассматривается.

Соседние файлы в папке Презентации по Java