@oventarb

Как в Java делать byte b; b++ и b-- правильно?

byte b;
Как делать:
++b
b++
--b
b--
b+=число
b-=число
корректно, по правилам дополнительного кода, чтобы результат оставался в рамках от 0 до 255?
Пример: 200 + 100 = 44
  • Вопрос задан
  • 878 просмотров
Решения вопроса 1
@Ix_Didicus
К сожалению, в Java нет unsigned типов, но можно перед выводом или использованием значения наложить на него битовую маску:

public class bytes{
	public static void main(String[] args){
		byte b = (byte) 200;
		System.out.println(b & 0xFF);
		b+=100;
		System.out.println(b & 0xFF);
	}
}


Этот код выведет 200 и 44.

>>Пример: 200 + 100 = 44
К слову, это называется не "дополнительным кодом" (доп. код — это представление отрицательных чисел, см. ту же Википедию), а переполнением, т.е., попыткой записать в переменную число большее, чем допустимо типом переменной, в результате чего старшие биты попросту утрачиваются.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@zelan
Кратко обо мне не получится.
ремарка: если тебе нужны значения от 0 до 255, то тип byte тебе не подходит. byte лежит в пределе от -128 до 127. В итоге если нужен диапазон от 0 и до 255 используй short или int, или же приводи b к int.

Немного не понятна суть вопроса: имеется ввиду что если b=200, делаешь b+=100 и в результате хочешь получить 255 (эдакая защита от "переполнения")? или что-то другое?
Ответ написан
@mamkaololosha
Брать тип под задачу. Хоть BigDecimal.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы