powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сдвиги >>>
8 сообщений из 8, страница 1 из 1
Сдвиги >>>
    #33832373
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код
Код: plaintext
1.
  int  i = - 2147483648 ;
 System.out.println("i>>>1 " + (i>>> 1 ));
т.е. наше число 111111....11111 после сдвига должно быть 01111...1111. НО оно равно 001111...1111.

Еще код
Код: plaintext
1.
  int  i = - 1 ;
 System.out.println("i>>>1 " + (i>>> 1 ));
[/src]т.е. наше число 10000....00001 после сдвига должно быть 01000...0000. НО оно равно 111111...1111.

Почему, может кто объяснит?
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33832435
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 public   class  A {
     public   static   void  main(String args[]) {
         int  i = - 2147483648 ;
         System.out.println(val(i) + ">>>1=" + val(i>>> 1 ));

          int  j = - 1 ;
         System.out.println(val(j) + ">>>1=" + val(j>>> 1 ));
    }

     private   static  String val( int  i) {
        StringBuilder b =  new  StringBuilder();
         for  ( int  j = ( 1  <<  31 ); j !=  0 ; j >>>=  1 ) {
            b.append((i & j) ==  0  ? "0" : "1");
        }
         return  b.toString();
    }
}

al@mind:/pro/1$ javac A.java
al@mind:/pro/1$ java A
10000000000000000000000000000000>>>1=01000000000000000000000000000000
11111111111111111111111111111111>>>1=01111111111111111111111111111111

Где проблема?
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33832442
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том, что значения i и j не те, что ты написал;)
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33832507
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор10000000000000000000000000000000>>>1=01000000000000000000000000000000
11111111111111111111111111111111>>>1=01111111111111111111111111111111
Т.е. -1 = 11111111111111111111111111111111 !!????
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33832618
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор, вообще-то -1 это как раз набор всех единиц. А не 1000...0000

-2147483648 = 10000000000000000000000000000000
-1 = 11111111111111111111111111111111

Ты что-то не так понимаешь.

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33832794
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в шоке...
авторThe value of n>>>s is n right-shifted s bit positions with zero-extension. If n is positive, then the result is the same as that of n>>s; if n is negative, the result is equal to that of the expression (n>>s)+(2<<~s) if the type of the left-hand operand is int , and to the result of the expression (n>>s)+(2L<<~s) if the type of the left-hand operand is long. The added term (2<<~s) or (2L<<~s) cancels out the propagated sign bit. (Note that, because of the implicit masking of the right-hand operand of a shift operator, ~s as a shift distance is equivalent to 31-s when shifting an int value and to 63-s when shifting a long value.)
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33833615
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН автор10000000000000000000000000000000>>>1=01000000000000000000000000000000
11111111111111111111111111111111>>>1=01111111111111111111111111111111
Т.е. -1 = 11111111111111111111111111111111 !!????
Отрицательные числа в дополнительном коде записываются. Инверсией + 1.
Т.е.
-1 -> !1 + 1
-00000001 -> 11111110 + 1 = 11111111
...
Рейтинг: 0 / 0
Сдвиги >>>
    #33833705
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, уже разобрался...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сдвиги >>>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]