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

Тип int16

Тип int16 в Go представляет 16-разрядное целое число со знаком. Он занимает 2 байта (16 бит) памяти и может хранить значения в диапазоне от -32768 до 32767. Этот тип часто используется для экономии памяти при работе с небольшими числами, а также при взаимодействии с внешними системами, где требуется строго определенный размер данных.

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

Тип int16 имеет фиксированный диапазон значений. Давайте выведем минимальное и максимальное значение с помощью констант пакета math:

package main import ( "fmt" "math" ) func main() { fmt.Printf("Min: %d\n", math.MinInt16) fmt.Printf("Max: %d\n", math.MaxInt16) }

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

"Min: -32768" "Max: 32767"

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

Объявление переменной

Переменную типа int16 можно объявить несколькими способами: явно указав тип, с помощью короткой записи, или с использованием литералов разных систем счисления:

package main import "fmt" func main() { var num1 int16 = 10000 num2 := int16(5000) var num3 int16 hexNum := int16(0x7FFF) octNum := int16(077777) fmt.Println(num1) fmt.Println(num2) fmt.Println(num3) fmt.Println(hexNum) fmt.Println(octNum) }

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

"10000" "5000" "0" "32767" "32767"

Обратите внимание, что переменная num3 получает нулевое значение по умолчанию для типа int16.

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

С типом int16 можно выполнять все стандартные арифметические операции: сложение, вычитание, умножение, деление и взятие остатка:

package main import "fmt" func main() { a := int16(100) b := int16(25) res1 := a + b res2 := a - b res3 := a * b res4 := a / b res5 := a % b fmt.Println(res1) fmt.Println(res2) fmt.Println(res3) fmt.Println(res4) fmt.Println(res5) }

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

"125" "75" "2500" "4" "0"

При выполнении арифметических операций важно помнить, что результат не должен выходить за пределы диапазона значений типа int16.

Переполнение

При выходе за пределы допустимого диапазона возникает переполнение. В Go переполнение для целочисленных типов происходит без предупреждения, значение "зацикливается":

package main import "fmt" func main() { var num int16 = 32767 num++ fmt.Println(num) }

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

"-32768"

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

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

Тип int16 можно преобразовывать к другим целочисленным типам с помощью явного приведения. Важно следить, чтобы значение помещалось в целевой тип:

package main import "fmt" func main() { var a int16 = 1000 b := int32(a) c := int(a) d := int8(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) }

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

"1000" "1000" "232"

При преобразовании int16 в int8 происходит обрезание старших битов, что может привести к неожиданным результатам, как в примере выше.

Сравнение чисел

Значения типа int16 можно сравнивать между собой с использованием операторов сравнения:

package main import "fmt" func main() { a := int16(100) b := int16(200) c := int16(100) fmt.Println(a == b) fmt.Println(a != b) fmt.Println(a < b) fmt.Println(a > b) fmt.Println(a <= b) fmt.Println(a >= b) fmt.Println(a == c) }

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

"false" "true" "true" "false" "true" "false" "true"

Операторы сравнения возвращают логическое значение bool и позволяют проверять отношения между числами.

Работа с вводом-выводом

Тип int16 часто используется для чтения данных из бинарных файлов или сетевых протоколов, где требуется строго определенный размер. Пример чтения числа из байтового среза:

package main import ( "encoding/binary" "fmt" ) func main() { bytes := []byte{0x01, 0x00} num := binary.LittleEndian.Uint16(bytes) numInt16 := int16(num) fmt.Printf("Bytes: %v\n", bytes) fmt.Printf("Uint16: %d\n", num) fmt.Printf("Int16: %d\n", numInt16) }

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

"Bytes: [1 0]" "Uint16: 1" "Int16: 1"

Для корректной работы с бинарными данными используйте пакет encoding/binary, который позволяет контролировать порядок байтов.

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

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