|
||||||||
Программирование мобильных телефонов
Программирование на Java
|
Класс Biglnteger Все примитивные целые типы имеют ограниченный диапазон значений. В целочисленной арифметике Java нет переполнения, целые числа приводятся по модулю, равному диапазону значений. Для того чтобы было можно производить целочисленные вычисления с любой разрядностью, в состав Java API введен класс Biglnteger , хранящийся в пакете java.math . Этот класс расширяет класс Number , следовательно, в нем переопределены методы doubleValue(), floatValue(), intValue(), longValue() . Методы byteVaiue() и shortvalue() не переопределены, а прямо наследуются от класса Number . Действия с объектами класса Biglnteger не приводят ни к переполнению, ни к приведению по модулю. Если результат операции велик, то число разрядов просто увеличивается. Числа хранятся в двоичной форме с дополнительным кодом. Перед выполнением операции числа выравниваются по длине распространением знакового разряда. Шесть конструкторов класса создают объект класса BigDecimai из строки символов (знака числа и цифр) или из массива байтов. Две константы — ZERO и ONE — моделируют нуль и единицу в операциях с объектами класса Biglnteger . Метод toByteArray() преобразует объект в массив байтов. Большинство методов класса Biglnteger моделируют целочисленные операции и функции, возвращая объект класса Biglnteger :
В листинге 4.3 приведены примеры использования данных методов, а рис. 4.4 показывает результаты выполнения этого листинга.
Рис. 4.4. Методы класса Biglnteger в программе BiglntegerTest Листинг 4.3. Методы класса Biglnteger в программе BiglntegerTest import Java.math.Biglnteger; class BiglntegerTest{ public static void main(String[] args){ Biglnteger a = new Biglnteger("99999999999999999") ; Biglnteger b = new Biglnteger("88888888888888888888"); System.out.println("bits in a = " + a.bitLength()); System.out.println("bits in b = " + b.bitLengthO); System.out.println("a + b = " + a.add(b)); System.out.println("a & b = " + a.and(b)); System.out.println("a & ~b = " + a.andNot(b)); System.out.println("a / b = " + a.divide(b)); Biglnteger[] r = a.divideAndRemainder(b); System.out.println("a / b: q = " + r[0] + ", r = " + r[l]); System.out.println("gcd(a, b) = " + a.gcd(b)); System.out.println("max(a, b) = " + a.max(b)); System.out.printin("min(a, b) = " + a.min(b)); System.out.println("a mod b = " + a.mod(b)); System.out.println("I/a mod b = " + a.modlnverse(b)); System.out.println("алп mod b = " + a.modPow(a, b)); System.out.println("a * b = " + a.multiply(b)); System.out.println("-a = " + a.negate()); System, out. println ("~a = " + a.not()); System.out.println("a | b = " + a.or(b)); System.out.println("а л 3 = " + a.pow(3)); System.out.println("a % b = " + a.remainder(b)); System.out.println("a « 3 = " + a.shiftLeft(3)}; System.out.println("a » 3 = " + a.shiftRight(3)); System.out.println("sign(a) = " + a.signum()); System.out.println("a - b = " + a.subtract(b)); System.out.println("а л b = " + a.xor(b)); } } Обратите внимание на то, что в программу листинга 4.3 надо импортировать пакет Java.math .
|
|
||||||
Copyright © vzlom-1.ru 2020-2021
|