Загрузка...

Подскажите, что делает данная строка?

Тема в разделе C/C++ создана пользователем iohdfghidfhg 7 апр 2021. 227 просмотров

  1. iohdfghidfhg
    iohdfghidfhg Автор темы 7 апр 2021 1 27 янв 2021
    Все понимаю, но хз какой пес там нужны ">>"
    Нужно узнать чему равна переменная Z
    int X = 4, Y = 6;
    int Z = Y >> X;
     
  2. PEUCUK
    PEUCUK 7 апр 2021 Начинать нужно сейчас.zelenka.guru/threads/2853731 20 042 20 май 2020
    Происходит присваивание x=2,y=5.
     
    1. iohdfghidfhg Автор темы
      PEUCUK, Спасибо, но у меня в задании спрашивается чему равно Z, получается оно равно 0? Ибо после равно никакого сложения или другого действия не происходит
  3. 0xFFE08
    0xFFE08 7 апр 2021 7 15 авг 2020

    Это называется побитовым сдвигом. В данном случае - побитовым сдвигом вправо. И да, Z равно 0.
    Почему так происходит и почему оно равно 0? В строку с побитовым сдвигом подставим соответствующие значения: 6 и 4. Таким образом: 6 >> 4. Т.е побитовый сдвиг на 4. Представим 6 в бинарной системе счисления: 6 = 0110. Для наглядности я сделаю так:

    Код
    6 >> 1
    0110 >> 1 => 0011, 0011 = 3

    6 >> 2
    0110 >> 2 => 0001, 0001 = 1

    6 >> 3
    0110 >> 3 => 0000
    4 нет смысла проверять, оно также будет равно 0.
    Т.е мы смещаем (в данном случае вправо) заданное значение (в данном случае 6) на определенное целое количество битов (в данном случае на 4).

    Ну, это максимально тривиальное объяснение.
     
    1. iohdfghidfhg Автор темы
  4. PEUCUK
    PEUCUK 9 апр 2021 Начинать нужно сейчас.zelenka.guru/threads/2853731 20 042 20 май 2020
    Оператор побитового сдвига вправо (>>) сдвигает биты вправо. Например:

    12 = 1100
    12 >> 1 = 0110 = 6
    12 >> 2 = 0011 = 3
    12 >> 3 = 0001 = 1

    В третьем случае мы снова переместили бит за пределы литерала. Он также потерялся навсегда.
     
Top
Загрузка...