Skip to content

shiftrightunsigned(column, numBits)

Описание

Функция shiftrightunsigned() выполняет беззнаковый побитовый сдвиг числа вправо на указанное количество битов. В отличие от shiftright(), старшие биты всегда заполняются нулями, независимо от знака числа.

Параметры

  • column: Column - числовой столбец
  • numBits: Integer - количество битов для сдвига

Возвращаемое значение

Integer - результат беззнакового побитового сдвига вправо

Пример использования

from pyspark.sql import SparkSession
from pyspark.sql.functions import shiftrightunsigned

# Создаем SparkSession
spark = SparkSession.builder.appName("shiftrightunsigned_example").getOrCreate()

# Создаем DataFrame с числами
data = [
    (4,),    # 0100 >>> 1 = 0010
    (-8,),   # 11111111111111111111111111111000 >>> 2 = 00111111111111111111111111111110
    (12,)    # 1100 >>> 1 = 0110
]
df = spark.createDataFrame(data, ["number"])

# Выполняем беззнаковый побитовый сдвиг вправо
result = df.select(
    "number",
    shiftrightunsigned("number", 1).alias("shift1"),
    shiftrightunsigned("number", 2).alias("shift2")
).show()

# Результат:
# +------+-------+-------+
# |number|shift1|shift2|
# +------+-------+-------+
# |     4|      2|      1|
# |    -8| 2147483644| 1073741822|
# |    12|      6|      3|
# +------+-------+-------+

Примечания

  • Функция работает только с целыми числами
  • В отличие от shiftright(), старшие биты всегда заполняются нулями
  • Если количество битов отрицательное, возвращается NULL
  • Для знакового сдвига вправо используйте shiftright()
  • Для сдвига влево используйте shiftleft()
  • Для других побитовых операций используйте bitwiseAND(), bitwiseOR() и bitwiseXOR()