Функция math.Ilogb

Функция math.Ilogb возвращает целочисленный двоичный порядок числа, то есть показатель степени двойки для нормализованного представления числа. В качестве единственного аргумента функция принимает число типа float64, а возвращает значение типа int. Если аргумент равен нулю, функция возвращает константу math.MinInt32. Если аргумент является бесконечностью или NaN, функция возвращает math.MaxInt32.

Синтаксис

gomath.Ilogb(x)

Пример

Давайте получим двоичный порядок числа 16:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.Ilogb(16)
  fmt.Println(res)
}

Результат выполнения кода:

go4

Число 16 представляется как 2⁴, поэтому функция возвращает 4.

Пример

Давайте получим двоичный порядок числа 0.5:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.Ilogb(0.5)
  fmt.Println(res)
}

Результат выполнения кода:

go-1

Число 0.5 представляется как 2⁻¹, поэтому функция возвращает -1.

Пример

Давайте проверим поведение функции для нулевого аргумента:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.Ilogb(0)
  fmt.Println(res)
}

Результат выполнения кода:

go-2147483648

Для нулевого аргумента функция возвращает константу math.MinInt32.

Пример

Давайте проверим поведение функции для отрицательного числа:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.Ilogb(-32)
  fmt.Println(res)
}

Результат выполнения кода:

go5

Функция игнорирует знак числа и возвращает порядок абсолютного значения. Число 32 представляется как 2⁵, поэтому результат равен 5.

Смотрите также

  • функцию math.Logb,
    которая возвращает двоичный порядок числа в виде float64
  • функцию math.Frexp,
    которая разбивает число на мантиссу и двоичный порядок
  • функцию math.Ldexp,
    которая выполняет обратную операцию - умножает число на 2 в степени
  • функцию math.Pow,
    которая возводит число в произвольную степень