Golang语言数据类型分类及进制转换案例

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.数据类型概述

Go语言的基本类型和其他语言大同小异,数据类型分为基本数据类型和高级(派生)数据类型。

1.基本数据类型

数值型:
	- 整数类型(int,int8,int16,int32,int64,uint8,uint16,uint32,uint64,byte,rune)
	- 浮点类型(float32,float64)
	- 复数(complex64,complex128)
	
字符型:
	- 没有单独的字符型,使用byte类型来保存单个字母字符。

布尔型:
	- 对应的类型为bool,有效值为: true|false

字符串:
	- 对应string。

2.高级数据类型

- 指针
- 数组
- 结构体
- 管道
- 函数
- 切片
- 接口
- map

二.进制和进制转换

1.进制概述

所谓"进制"就是"逢几进1"的问题,平时生活中用的最多的就是: 十进制。

计算机用二进制最多。

计算机如何区分进制呢?
	- 二进制:
		要求以"0b"开头,如:"0b101"
	
	- 八进制:
		要求以0开头,如:"017"。
	
    - 十进制:
  	    就是我们平时所写,所见即所得,比如: "99"。
  
	- 十六进制:
		要求以"0x"或者"0X"开头,如:"0x1F"

2.进制转换案例

- 二进制转换为十进制:
	比如: "0b1101"
	计算过程: 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = 13
	
	
- 十进制转换为二进制:
	比如: "13"
	计算过程: 将余数部分倒过来读,得到的二进制为"0b1101"。
      除数              | 被除数        | 余数
      2                    13			
      2                    6			    	1
      2                    3			    	0
      2                    1			    	1
                           0				    1
              
              
- 八进制转换为十进制:
	比如: "017"
	计算过程:	1*8^1 + 7*8^0 = 8 + 7 = 15
	

- 十进制转换为八进制:
	比如: "25"
	计算过程: 将余数部分倒过来读,得到的八进制为"031"。
      除数            | 被除数               | 余数
      8                    25			
      8                    3                    1
                           0                    3
      				
      				
- 八进制转换为16进制:
	比如: "015"
	解题思路: 把十进制当作一个中转站,先将八进制转换为十进制,再把十进制转换为十六进制。
	温馨提示: 实际上根本就不用自己转换这么麻烦,我们可以直接使用系统中提供给我们的计算器(程序员模式),或者在线进制转换的网页进行操作即可。

3.数字字面量语法(Number literals syntax)

package main

import (
	"fmt" // 我们可以借助fmt函数来将一个整数以不同进制形式展示。
)

func main() {
	// 注意,系统默认识别的是十进制数字哟~
	var a int = 10
	fmt.Printf("a ---> %d \n", a) // 10    占位符%d表示整形,默认以十进制显示哟~
	fmt.Printf("a ---> %b \n", a) // 1010  占位符%b表示二进制

	// Go1.13版本之后引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字

	// 二进制 以b开头
	b := 0b1010
	fmt.Printf("b ---> %d \n", b) // 10
	fmt.Printf("b ---> %b \n", b) // 1010

	// 八进制  以0开头
	var c int = 077
	fmt.Printf("c ---> %d \n", c) // 63
	fmt.Printf("c ---> %o \n", c) // 77  占位符%o表示八进制,原样输出八进制数字。
	fmt.Printf("c ---> %O \n", c) // 0o77  占位符%O表示八进制,在原样输出的八进制数字前多了一个"0o"哟~

	// 十六进制  以0x开头
	var d int = 0xff
	fmt.Printf("d ---> %d \n", d) // 255
	fmt.Printf("d ---> %x \n", d) // ff  占位符%x表示十六进制,输出是小写字母
	fmt.Printf("d ---> %X \n", d) // FF  占位符%X表示十六进制,输出是大写字母
}

三.原码反码补码

推荐阅读:
      https://www.cnblogs.com/yinzhengjie/p/8666354.html
posted @ 2024-06-21 23:52  尹正杰  阅读(32)  评论(0编辑  收藏  举报