Загрузка...

Tell me what this line does?

Thread in C/C++ created by iohdfghidfhg Apr 7, 2021. 228 views

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

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

    Code
    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 Topic starter
  4. PEUCUK
    PEUCUK Apr 9, 2021 Начинать нужно сейчас.zelenka.guru/threads/2853731 20,042 May 20, 2020
    Оператор побитового сдвига вправо (>>) сдвигает биты вправо. Например:

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

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