整型
整型
有符号整数和无符号整数类型表
类型 | 位宽 (n) | 表示范围 | 最小值表示(补码) | 最大正数表示(原码) | 备注 |
---|---|---|---|---|---|
int8 | 8 位 | 到 | 10000000 = -128 | 01111111 = 127 | 有符号 8 位整数 |
int16 | 16 位 | 到 | 1000000000000000 = -32,768 | 0111111111111111 = 32,767 | 有符号 16 位整数 |
int32 | 32 位 | 到 | 10000000...0 = -2,147,483,648 | 01111111...1 = 2,147,483,647 | 有符号 32 位整数 |
int64 | 64 位 | 到 | 10000000...0 = -9,223,372,036,854,775,808 | 01111111...1 = 9,223,372,036,854,775,807 | 有符号 64 位整数 |
uint8 | 8 位 | 到 | 00000000 = 0 | 11111111 = 255 | 无符号 8 位整数 |
uint16 | 16 位 | 到 | 00000000...0 = 0 | 11111111...1 = 65,535 | 无符号 16 位整数 |
uint32 | 32 位 | 到 | 00000000...0 = 0 | 11111111...1 = 4,294,967,295 | 无符号 32 位整数 |
uint64 | 64 位 | 到 | 00000000...0 = 0 | 11111111...1 = 18,446,744,073,709,551,615 | 无符号 64 位整数 |
如下代码可输出有符号和无符号整数范围
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("有符号整数范围:")
fmt.Printf("int8: [%d, %d]\n", math.MinInt8, math.MaxInt8)
fmt.Printf("int16: [%d, %d]\n", math.MinInt16, math.MaxInt16)
fmt.Printf("int32: [%d, %d]\n", math.MinInt32, math.MaxInt32)
fmt.Printf("int64: [%d, %d]\n", math.MinInt64, math.MaxInt64)
fmt.Println("\n无符号整数范围:")
fmt.Printf("uint8: [%d, %d]\n", 0, math.MaxUint8)
fmt.Printf("uint16: [%d, %d]\n", 0, math.MaxUint16)
fmt.Printf("uint32: [%d, %d]\n", 0, math.MaxUint32)
// 无符号最大值 uint64 需显式转换为 uint64 类型
const MaxUint64 = uint64(1<<64 - 1)
fmt.Printf("uint64: [%d, %d]\n", 0, MaxUint64)
}
输出
有符号整数范围:
int8: [-128, 127]
int16: [-32768, 32767]
int32: [-2147483648, 2147483647]
int64: [-9223372036854775808, 9223372036854775807]
无符号整数范围:
uint8: [0, 255]
uint16: [0, 65535]
uint32: [0, 4294967295]
uint64: [0, 18446744073709551615]
有符号整数
package main
import "fmt"
func main() {
// 有符号整数
var i8 int8 = 127 // -128 到 127
var i16 int16 = 32767 // -32768 到 32767
var i32 int32 = 2147483647 // -2147483648 到 2147483647
var i64 int64 = 9223372036854775807 // -9223372036854775808 到 9223372036854775807
var i int = 42 // 32位或64位(取决于系统)
_ = i // 使用 _ 忽略未使用的变量
// byte 是 uint8 的别名
var b byte = 255
// rune 是 int32 的别名
var r rune = '牛' // Unicode字符 只能为单个字符
fmt.Printf("有符号整数类型示例:\n")
fmt.Printf("int8: %d\n", i8)
fmt.Printf("int16: %d\n", i16)
fmt.Printf("int32: %d\n", i32)
fmt.Printf("int64: %d\n", i64)
fmt.Printf("byte: %d\n", b)
fmt.Printf("rune: %c\n", r)
}
输出
有符号整数类型示例:
int8: 127
int16: 32767
int32: 2147483647
int64: 9223372036854775807
byte: 255
rune: 牛
无符号整数
package main
import "fmt"
func main() {
// 无符号整数
var ui8 uint8 = 255 // 0 到 255
var ui16 uint16 = 65535 // 0 到 65535
var ui32 uint32 = 4294967295 // 0 到 4294967295
var ui64 uint64 = 18446744073709551615 // 0 到 18446744073709551615
var ui uint = 42 // 32位或64位(取决于系统)
_ = ui // 使用 _ 忽略未使用的变量
// byte 是 uint8 的别名
var b byte = 255
// rune 是 int32 的别名
var r rune = '牛' // Unicode字符 只能为单个字符
fmt.Printf("无符号整数类型示例:\n")
fmt.Printf("ui8: %d\n", ui8)
fmt.Printf("ui16: %d\n", ui16)
fmt.Printf("ui32: %d\n", ui32)
fmt.Printf("ui64: %d\n", ui64)
fmt.Printf("byte: %d\n", b)
fmt.Printf("rune: %c\n", r)
}
输出
无符号整数类型示例:
ui8: 255
ui16: 65535
ui32: 4294967295
ui64: 18446744073709551615
byte: 255
rune: 牛