Побитовые сдвиги целых в Go
Сдвиг влево удваивает число на степень двойки,
сдвиг вправо делит на ту же степень нацело.
Знаки << и >> принимают число
и сколько разрядов сдвинуть.
Для знакового типа правый сдвиг арифметический: знак сохраняют, а не просто сдвигают нули со старшего края. Для беззнакового правый сдвиг логический, пустые места заполняют нулями.
Сдвинем 5 влево и вправо:
n := 5
left := n << 1
right := n >> 1
fmt.Println(left, right)
fmt.Printf("%b %b %b\n", n, left, right)
Слева получаем 10, справа 2.
Сдвиг на 2 разряда умножает или
делит на 4:
k := 3
up := k << 2
down := k >> 2
fmt.Println(up, down)
Даны числа:
x := 4
Сдвиньте x влево на 3 разряда
и запишите результат.
Даны числа:
y := 32
Сдвиньте y вправо на 2 разряда
и запишите результат.
Дан следующий код:
a := 1
b := 2
Сдвиньте a влево на b
разряда и запишите результат.