РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
39 of 1593 menu

Тип uint64

Тип uint64 представляет собой 64-битное целое число без знака. Он может хранить значения в диапазоне от 0 до 18446744073709551615. Этот тип часто используется для работы с большими числами, идентификаторами, битовыми масками, хеш-суммами и в системном программировании. В отличие от знаковых типов, uint64 не может хранить отрицательные значения, что гарантирует, что все операции с ним будут выполняться с неотрицательными числами.

Объявление переменных

Объявим переменную типа uint64 с использованием явного указания типа:

package main import "fmt" func main() { var num uint64 = 100500 fmt.Println(num) }

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

100500

Также можно использовать короткую форму объявления без указания типа, если Go может вывести его из контекста:

package main import "fmt" func main() { num := uint64(123456789) fmt.Println(num) }

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

123456789

Диапазон значений

Максимальное значение для типа uint64 можно получить с помощью константы math.MaxUint64 из пакета math:

package main import ( "fmt" "math" ) func main() { fmt.Println(math.MaxUint64) }

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

18446744073709551615

Попытка присвоить значение, превышающее максимальное, приведет к ошибке компиляции, поскольку литерал выходит за пределы допустимого диапазона.

Арифметические операции

С переменными типа uint64 можно выполнять стандартные арифметические операции: сложение, вычитание, умножение и деление. Результат операции всегда будет типа uint64, если оба операнда имеют этот тип:

package main import "fmt" func main() { a := uint64(1000000) b := uint64(2000000) sum := a + b diff := b - a prod := a * b quot := b / a fmt.Println(sum, diff, prod, quot) }

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

3000000 1000000 2000000000000 2

При сложении двух чисел uint64 важно помнить о возможном переполнении. Если результат сложения превышает math.MaxUint64, происходит переполнение и результат вычисляется по модулю 2^64:

package main import ( "fmt" "math" ) func main() { a := math.MaxUint64 b := uint64(1) res := a + b fmt.Println(res) }

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

0

Битовые операции

Тип uint64 поддерживает все битовые операции: побитовое И, ИЛИ, исключающее ИЛИ, сдвиги влево и вправо. Это делает его удобным для работы с битовыми масками и низкоуровневым программированием:

package main import "fmt" func main() { a := uint64(0b1010) // 10 в десятичной b := uint64(0b1100) // 12 в десятичной and := a & b or := a | b xor := a ^ b shiftLeft := a << 2 shiftRight := a >> 1 fmt.Println(and, or, xor, shiftLeft, shiftRight) }

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

8 14 6 40 5

Преобразование типов

Для преобразования uint64 в другие числовые типы используется явное приведение. При преобразовании в меньший тип (например, uint32) старшие биты будут отброшены:

package main import "fmt" func main() { var num uint64 = 123456789012345 var num32 uint32 = uint32(num) var numFloat float64 = float64(num) fmt.Println(num32, numFloat) }

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

404232601 123456789012345

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

  • тип int64,
    который хранит 64-битные целые числа со знаком
  • тип uint32,
    который хранит 32-битные целые числа без знака
  • тип uint,
    который имеет размер, зависящий от архитектуры
  • тип uintptr,
    который предназначен для хранения указателей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить