@Mister_krid

Что значат стрелочки в выражении?

Что значит << прикол но я не нагуглил, а прогнав в дебаге значение в скобке увеличилось вдвое.
static public void Bresenham4Line(Graphics g, Color clr, int x0, int y0, int x1, int y1)
        {
            //Изменения координат
            int deltaX = (x1 > x0) ? (x1 - x0) : (x0 - x1);
            int deltaY = (y1 > y0) ? (y1 - y0) : (y0 - y1);
            //Направление приращения
            int sx = (x1 >= x0) ? (1) : (-1);
            int sy = (y1 >= y0) ? (1) : (-1);

            if (deltaY < deltaX)
            {
                int d = (deltaY << 1) - deltaX;
                int d1 = deltaY << 1;
                int d2 = (deltaY - deltaX) << 1;
                PutPixel(g, clr, x0, y0, 255);
                int x = x0 + sx;
                int y = y0;
                for (int i = 1; i <= deltaX; i++)
                {
                    if (d > 0)
                    {
                        d += d2;
                        y += sy;
                    }
                    else
                        d += d1;
                    PutPixel(g, clr, x, y, 255);
                    x++;
                }
            }
            else
            {
                int d = (deltaX << 1) - deltaY;
                int d1 = deltaX << 1;
                int d2 = (deltaX - deltaY) << 1;
                PutPixel(g, clr, x0, y0, 255);
                int x = x0;
                int y = y0 + sy;
                for (int i = 1; i <= deltaY; i++)
                {
                    if (d > 0)
                    {
                        d += d2;
                        x += sx;
                    }
                    else
                        d += d1;
                    PutPixel(g, clr, x, y, 255);
                    y++;
                }
            }
        }
  • Вопрос задан
  • 323 просмотра
Решения вопроса 3
ayazer
@ayazer
Sr. Software Engineer
<<, >> - битовые сдвиги

https://docs.microsoft.com/en-us/dotnet/csharp/lan...
Ответ написан
Комментировать
neuotq
@neuotq
Прокрастинация
Во многих языках программирования << используется для операции битового сдвига влево, те число в двоичном виде "двигается" влево, с заполнением нулями новых битов.
Ответ написан
Комментировать
vabka
@vabka Куратор тега C#
Токсичный шарпист
<< и >> - это операторы побитового сдвига влево, и вправо.

При сдвиге влево, числа действительно увеличиваются в 2^x раз
(a << b == a * 2^b). Особенности возникают только при работе со знаком числа.

Иногда это люди используют не для того чтобы сдвинуть биты, а как раз чтобы умножить на степень двойки, но в этом нет никакого смысла, тк такой паттерн вполне хорошо распознаётся JIT-компилятором
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы