无符号整型

Go 基础

删除回忆录丶 提交于 2020-03-19 02:16:34
一、Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的第一个简单的程序 */ fmt.Println("Hello, World!") } 让我们来看下以上程序的各个部分: 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。 下一行 /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式

整型,长整型,无符号整型等 大端和小端(Big endian and Little endian)

我与影子孤独终老i 提交于 2020-03-03 16:17:42
一、大端和小端的问题 对于整型、长整型、无符号整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)。 例如,假设从内存地址 0x0000 开始有以下数据: 0x0000 0x0001 0x0002 0x0003 0x12 0x34 0xab 0xcd 如果我们去读取一个地址为 0x0000 的四个字节变量,若字节序为big-endian,则读出结果为0x1234abcd;若字节序为little-endian,则读出结果为0xcdab3412。 如果我们将0x1234abcd 写入到以 0x0000 开始的内存中,则Little endian 和 Big endian 模式的存放结果如下: 地址 0x0000 0x0001 0x0002 0x0003 big-endian 0x12 0x34 0xab 0xcd little-endian 0xcd 0xab 0x34 0x12 一般来说,x86 系列 CPU 都是 little-endian 的字节序,PowerPC 通常是 big-endian,网络字节顺序也是 big-endian还有的CPU 能通过跳线来设置 CPU 工作于

18.Go语言基础之反射

◇◆丶佛笑我妖孽 提交于 2020-02-25 15:25:33
1.变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 2.反射介绍 在Python中,Java中,都有反射的概念。 反射是"指程序运行期对程序本身进行访问和修改的能力"。 程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言,可以再程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等正和岛可执行文件中,并给程序提供接口,访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。 Go程序在运行期使用reflect包访问程序的反射信息。 上面我们介绍过空接口,空接口可以存储任意类型的变量,那我们怎样知道空接口保存的数据是什么呢?"反射就是在运行时动态的获取一个变量的类型信息和值信息。" 3.reflect包 在Go语言的反射机制中,任何接口都由"一个具体类型"和"具体类型的值"两部分组成。 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflect.ValueOf两个函数来获取任意对象的Value和Type。 3.1TypeOf 在Go语言中

Go语言基础之基本数据类型

我的未来我决定 提交于 2020-02-19 09:41:40
Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 其中, uint8 就是我们熟知的 byte 型, int16 对应C语言中的 short 型, int64 对应C语言中的 long 型。 类型 描述 uint8 无符号 8位整型 (0 到 255) uint16 无符号 16位整型 (0 到 65535) uint32 无符号 32位整型 (0 到 4294967295) uint64 无符号 64位整型 (0 到 18446744073709551615) int8 有符号 8位整型 (-128 到 127) int16 有符号 16位整型 (-32768 到 32767) int32 有符号 32位整型 (-2147483648 到 2147483647) int64 有符号 64位整型 (-9223372036854775808 到 9223372036854775807) 特殊整型 类型 描述 uint 32位操作系统上就是 uint32 ,64位操作系统上就是 uint64

必会,详细剖析11道嵌入式Linux C语言面试题

丶灬走出姿态 提交于 2020-02-13 00:43:15
预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 答: #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2) 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3) 意识到这个表达式将使一个16位机的整型数溢出, 因此要用到长整型符号L, 告诉编译器这个常数是长整型数。 4) 如果你在表达式中用到UL(表示无符号长整型),那么可能这就给面试者留下了很好的第一印象。记住第一印象很重要。 2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。 答: #define MIN(A,B) ((A) <= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2) 懂得在宏中小心地把参数用括号括起来 3) 我也用这个问题开始讨论宏的副作用,例如

关于C++中有符号整型和无符号整型的转换方法

浪尽此生 提交于 2020-02-09 18:24:18
首先举个c++代码,如下: #include <iostream> using namespace std; /* * 这个程序演示了有符号整数和无符号整数之间的差别 */ int main() { short int i; // 有符号短整数 short unsigned int j; // 无符号短整数 j = 50000; i = j; cout << i << " " << j; return 0; } 输出结果为: -15536 50000 转换方法(以16位二进制为例): (1) 有符号十进制整型→无符号十进制整型 将有符号十进制整数转换二进制,由于最高位为符号位,此时将符号位按数据位进行转换,转换的十进制数即为无符号整型数。 注意:负数的二进制是最高位为符号位,其余位为绝对值的补码(绝对值原码取反+1),0011,1100,1011,0000(绝对值原码),1100,0011,0101,0000(取反加1,最高位为1),该二进制为-15536的二进制表示。现将二进制所有位视为数据位转换十进制,即得50000。 (2) 无符号十进制整型→有符号十进制整型 将无符号十进制整数转换成二进制,减1并按位取反,然后转换成十进制。 举例: 无符号整型数 50000,其二进制为‭1100,0011,0101,0000‬,最高位为1,因此转换后的有符号整型数为负数,其余位视为整体

21天学通C语言-学习笔记(4)

会有一股神秘感。 提交于 2020-01-13 10:20:05
第4章 基本数据类型 本章将重点介绍C语言提供的三组基本数据类型的使用,包括:整型、字符型和浮点型。C语言的其他高级数据类型实质上都可以视为这些基本数据类型的组合。通过本章的学习,要掌握以下知识: 各种整型数据类型的使用; 各种字符型数据类型的使用; 各种浮点型数据类型的使用; 使用 printf 函数和 scanf 函数处理各种类型的数据; 使用 typedef 自定义数据类型; 限定词 const 和volatile的使用。 4.1 整型数据类型 C语言定义了4种整型数据类型以表示不同大小的整数数值。 short int:短整型 int:整型 long int:长整型 long long int:长长整型 本节将介绍各种整型数据类型的字节长度、整型常量和整型变量的使用,以及使用整型类型的存储方式和范围。 4.1.1 字节长度 在不同的编译器和不同的硬件环境中,整型数据类型的字节长度可能不同,但是都具有以下关系:short int 型的长度不大于 int 型的长度,int 型的长度不大于 long int 型的长度,long int 型的长度不大于 long long int 型的长度。 【范例4-1】 输出各整型的字节长度,实现方法如示例代码4-1所示。 示例代码4-1 #include <stdio.h> int main(void){ printf("sizeof

Go语言学习笔记——入门级

情到浓时终转凉″ 提交于 2020-01-10 08:16:12
Go语言 一、简介 1. 语言特色 简介、快速、安全 并行、有趣、开源 内存管理、数组安全、编译迅速 2. 语言用途 用于搭载web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 3. 主要特性 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 二、环境搭建 1. 下载 安装包下载地址 https://golang.org/dl/ https://golang.google.cn/dl/ 2. Windows系统下安装 Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。 默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。 3. Unix/Linux/Mac OS X或FreeBSD安装 下载二进制包: go1.4.linux-amd64.tar.gz 解压至/usr/local目录 tar -C /usr/local -xzf go1.4.linux-amd64.tar

Golang 学习笔记 004 基础数据类型及输出格式化标记

只谈情不闲聊 提交于 2020-01-08 21:29:21
数据类型-基础数据类型 Go 语言中包含的数据类型有以下几种: 基础类型 布尔型 bool : 值只可以是常量 true 或者 false 字符串 string : 由一串固定长度的字符连接起来的字符序列 整数 有符号整数 int : 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽 int8 : 有符号 8 位整型 (-128 到 127) int16 : 有符号 16 位整型 (-32768 到 32767) int32 : 有符号 32 位整型 (-2147483648 到 2147483647) int64 : 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) 无符号整数 uint : 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽 uint8 : 无符号 8 位整型 (0 到 255) uint16 : 无符号 16 位整型 (0 到 65535) uint32 : 无符号 32 位整型 (0 到 4294967295) uint64 : 无符号 64 位整型 (0 到 18446744073709551615) 特殊整型 uintptr : 无符号整型,用于存放一个指针。在32位系统上通常为32位宽,在64位系统上则为64位宽 byte : uint8 的别名

go 的基本数据类型

扶醉桌前 提交于 2020-01-04 15:25:35
go 支持的数据类型 bool 类型 数字类型 有符号整型 无符号整型 浮点型 复数类型 //bool 类型 //bool 表示布尔值,值为true 或者false func booltest() { x :=true y :=false fmt.Println("x",x,"y",y) } 输出:x true y false 数字类型分为:有符号整型、无符号整型、 有符号整型 int 8 表示8位 有符号整型 范围 -128~127 int 16 表示16位有符号整型 说值范围 -32768~32767 int32 表示32 位有符号整型 范围 -2147483648~2147483647 int64 表示64位有符号整型 -9223372036854775808~9223372036854775807 int 根据不同底层平台,表示32位或者64位整型 ,除非对整型大小有特定对的需求 在32位系统是32位,64 位系统是64位 无符号整型 unit8: 数值范围:0-255 unit16: 数值范围:0-65535 unit32 数值范围:0~4294967295 unit64: 数值范围:0~18446744073709551615 unit:根据不同的底层平台,32 位系统是32位,64 位系统是64位 var x1 int =67 y1 :=88 fmt.Println(