Как однозначно выполнять перевод int -> byte-> int в Java?

78
19 июня 2019, 20:00
int a = 412;    
byte c = (byte) a; //-100
int b = c & 0xFF; //156

Возможно ли в данном случае получить исходное 412?

Answer 1

412 - это 32 бита 0000_0000_0000_0000_0000_0001_1001_1100 в двоичном виде Приведение к байту возьмет правый байт (8 бит), т.е. 1001_1100 Это есть -100 (десятичное) Как переводить - инвертировать все биты и добавить 1 (в двоичном виде, конечно). 0110_0011 + 1 = 0110_0100 - это и будет модуль вашего отрицательного числа. Откройте в виндовсе калькулятор (Программистский) и поэкспериментируйте там )) Ну и приведение назад к 32 битам даст тот же набор бит, дополненный нулями слева: 0000_0000_0000_0000_0000_0000_1001_1100 - это число 156. И маска FF в данном случае лишняя. Вы все равно из байта не получите больше 8 бит.

READ ALSO
Как вывести на экран каждую вторую букву слова? (java) [закрыт]

Как вывести на экран каждую вторую букву слова? (java) [закрыт]

Как вывести на экран каждую вторую букву любого слова?

81
SAX парсинг тегов

SAX парсинг тегов

Каким образом можно по тексту тегов, которые внутри тега отцовского, узнать какому именно отцу он пренадлежит и выдать все значение внутри...

117
Gulp 4 выдает ошибку

Gulp 4 выдает ошибку

Исходники: Gulp4zip

110