У меня есть вопрос о том, как работает два дополнения при приведении int к байту.Например, при приведении типа int, значение которого находится в диапазоне от 127 до 256, я получаю отрицательные значения, и я хотел бы понять, как это сделать.Я получаю, что старшие биты выбрасываются, поэтому все, что между 256 и 512, приводит к переменной байта, содержащей значение int минус 256;но мне интересно, как работать с отрицательными значениями в двоичном формате.
Например, мне интересно, как работает следующий фрагмент кода:
int i = 140;
byte b = (byte) i;
System.out.println(b); // outputs -116
140 - это 10001100в двоичном, и в двоичном дополнении двух из того, что я собираю.В двоичном виде, как 10001100 становится двоичным значением дополнения до двух, необходимым для вывода -116?