Не может байтовая переменная express 125 в Java? - PullRequest
1 голос
/ 12 апреля 2020

Я полностью java новичок и плохо владею английским sh. Поэтому я не знаю, как спросить, что я действительно хочу знать, но я пытаюсь ..

После того, как я узнал некоторый код об использовании байта, я практиковался. Но результат оказался не таким, как я ожидал ... ниже мой код!

public static void main(String[] args){
    byte n1 = -2; // 10000010
    byte r1 = (byte) (~n1); // expectation: 125(01111101)
    System.out.println(r1);
}

, но результат был "1" ..

Я узнал, что байт может express -128 ~ +127 и я думал, что «Затмение» покажет мне «125», но это было «1», поэтому я хочу знать, почему ..

Спасибо за ваше внимание к моему вопросу.

1 Ответ

3 голосов
/ 12 апреля 2020

~x эквивалентно x ^ -1 в Java, поэтому ~n1 равно -2 ^ -1 = 1.

Как указал Эран в комментариях, проблема в том, что вы ошибаетесь в отношении побитового представления -2. -2 равно 11111110, а 1000010 на самом деле -126.

...