Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpBtSh 73 of 280 menu
◀ ▶

Побитовые сдвиги целых в 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 разряда и запишите результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить