Как записать значение 65535 в short Java

217
07 мая 2017, 23:44

Доброго времени суток. В книге "Java SE 8 Базовый Курс" К. Хорстманна наткнулся на задачку и не могу решить:

"Напишите программу, вводящую 2 числа в пределах 0-65535, сохраняющую их в переменных типа short и вычисляющую их сумму, разность, произведение, частное и остаток без знака, не преобразуя эти величины в тип int."

Пробовал задействовать Short.toUnsignedInt(), но по условию задания, нужно записывать в переменные типа short. Буду рад помощи.

Answer 1

short – 16-битное целое число, диапазон значений которого – [-(2^16)/2;(2^16)/2-1] или [-32768; 32767]. Длина этого диапазона – 2^16 или 65536.

Вам необходимо с помощью short оперировать числами из отрезка [0;65535]. Для этого, при вводе числа, можно вычитать из него некоторое смещение, которое будет равно 32768.

Вот пример:

public class Main {
    private static final int sOffset = 32768;
    public static void main(String[] args) {
        short firstValue = stringToShort("2");
        short secondValue = stringToShort("65535");
        System.out.println("firstValue[short]: " + firstValue);
        System.out.println("secondValue[short]: " + secondValue);
        System.out.println("firstValue[original]: " + shortToInt(firstValue));
        System.out.println("secondValue[original]: " + shortToInt(secondValue));
        System.out.println("multiplication: " + shortToInt(firstValue)*shortToInt(secondValue));
    }
    private static short stringToShort(String value) {
        return (short) (Integer.parseInt(value) - sOffset);
    }
    private static int shortToInt(short value) {
        return value + sOffset;
    }
}

Вывод на консоль:

firstValue[short]: -32766
secondValue[short]: 32767
firstValue[original]: 2
secondValue[original]: 65535
multiplication: 131070

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

READ ALSO
Можно ли использовать объекты не через интерфейс и не нарушить OOD

Можно ли использовать объекты не через интерфейс и не нарушить OOD

Если объект класса (основного в файле) не имеет интерфейса и используется на прямую как часть состояния другого объекта, можно ли сказать...

165
HashMap в методы

HashMap в методы

Нужно вывести все значения HashMap hmap за ключом GroupНо в метод передается пустой hmap

221
Загрузка ресурсов из .jar файла

Загрузка ресурсов из .jar файла

У меня в проекте в папке с ресурсами лежит папка сxml файлами

251
Как “ужать” кнопку?

Как “ужать” кнопку?

Как стандартный компонент Button сделать узким, но чтобы текст на них не "резался", а оставался посередине кнопки?

185