Без запуска нижеприведённого кода надо сказать, что будет выведено в консоль, если Integer.MIN_VALUE == -2147483648. :)
1 public class Infinity
2 {
3 public static void main( String[] args ) {
4 System.out.println(" MinIntValue => "
5 + Integer.MIN_VALUE);
6 System.out.println("-MinIntValue => "
7 +
(
Read more... )
Comments 6
Reply
мои соображения таковы. старший байт - знаковый
следовательно так как
10000000000000000000000000000000 = 214748364 (вычислено в calc.exe без запуска исходника:))
должно вывестись НОЛЬ ( а флаг OF будет равен 1 типа произошло переполнение) если до всего этого какой-нить Exception не вылезет.
Reply
10000000 00000000 00000000 00000000bin = 80 00 00 00hex = 128 * 256 * 256 * 256dec = 2147483648dec.
Хотелось бы услышать ход твоих мыслей, на котором основано решение.
Reply
-MIN_VALUE == 2147483647
Reply
(The comment has been removed)
Думаю, вряд ли кто сможет догадаться, т.к. подобное поведение с++, ассемблеру, паскалю и иже с ними не присуще. Посему даю правильный ответ уже сегодня:
MIN_VALUE => -2147483648
-MIN_VALUE => -2147483648
Всё дело в волшебных пузырьках. :)
Дело в том, что для минвалю нет соответсвующего положительного значения. Поэтому смена знака отменяется.
Вот такая вот интересная фишка в жабе: Integer.MIN_VALUE == -Integer.MIN_VALUE :)
Кстати, если не делать функцию negate, а сразу менять знак у минвалю, то IDEA, например, ругается.
Reply
Reply
Leave a comment