Битовый сдвиг влево в контексте улья SQL - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь понять некоторый код HiveQL, который использует оператор ~, а также shiftleft(), который, как я знаю, является оператором побитового сдвига влево. Я разбил заключительную строку так, что я применяю каждое преобразование шаг за шагом, чтобы попытаться понять каждое. Однако я не могу понять операцию побитового сдвига влево, даже когда я ее изолирую. Я не программист по образованию.

Вот пример. Предположим, у меня есть значение, val: 768

Может ли кто-нибудь объяснить каждое преобразование с номером 3-5?

Код HiveQL

1. val
2. CAST(val AS int)
3. CAST(val AS int) & shiftleft(1,8)
4. CAST(val AS int) & ~shiftleft(1,8)
5. binary(val)

Результаты

  1. 768
  2. 768
  3. 256
  4. 512
  5. [37 36 38]

Также есть способ в HiveQL / SQL преобразовать целое число в двоичное представление со знаком двоичного числа со знаком?

...