Go语言中文网 为您找到相关结果 55

ubuntu下最新版golang安装教程

相信打算安装golang的同学们早已看了很多安装教程了,网上的主流方法有两种,一种是 sudo apt-get install golang-go 简单暴力,但是由于现在很多golang的库已经要求 >1.1 ,而 apt-get 安装的是 1.02 ,也建议大家安装最新版的golang,因此推荐手动安装,教程本身没有问题,但是由于某些特殊原因,可能导致安装失败甚至卡在莫名奇妙的地方。在卡了一个中午后,我还是写下这篇文章总结下要注意的地方。 以ubuntu wiki的 安装教程 为例: 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get insta...阅读全文

博文 2014-10-06 07:32:32 stonxer

go语言的chan

chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。 chan的数据结构: struct Hchan { uintgo qcount; // total data in the q uintgo dataqsiz; // size of the circular q uint16 elemsize; uint16 pad; // ensures proper alignment of the buffer that follows Hchan in mem...阅读全文

博文 2015-05-18 03:00:01 richmonkey

Go位运算:取反和异或

在Go规范,^ 这个运算符在一元运算符和二元运算符中都出现了。那么他们分别是啥? 在规范中说道:^ bitwise XOR integers 这是按位异或。比如: package main import "fmt" func main() { fmt.Println(5^2) } 到这执行:[http://play.golang.org/p/iZioqWSSdA](http://play.golang.org/p/iZioqWSSdA) 一般语言中,按位取反是:~ Go中是不是这样呢?可以写个程序试一下: package main import "fmt" func main() { ...阅读全文

golang二进制bit位的常用操作

package main import ( "fmt" "github.com/imroc/biu" ) /** golang二进制bit位的常用操作,biu是一个转换二进制显示的库 mengdj@outlook.com */ func main() { var( /** 1个字节=8个二进制位,每种数据类型占用的字节数都不一样 注意位操作千万不要越界了,如某个类型占8个bit位,偏移时候不要超过这个范围 */ a uint8=30 ) //a输出结果:00011110 fmt.Println(biu.ToBinaryString(a)) /** 将某一位设置为1,例如设置第8位,从右向左数需要偏移7位,注意不要越界 1<<7=1000 0000 然后与a逻辑或|,偏移后的第8位为1,逻辑|...阅读全文

博文 2018-08-17 12:30:00 mengdejun

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

golang取两个数字之间的随机数

golang取两个数字之间的随机数 package main import ( "crypto/rand" "math/big" "fmt" ) func main(){ fmt.Println(RandInt64(100,3000)) } func RandInt64(min,max int64) int64{ maxBigInt:=big.NewInt(max) i,_:=rand.Int(rand.Reader,maxBigInt) if i.Int64()阅读全文

博文 2015-11-09 21:00:01 别人说我名字很长

golang的位运算操作符的使用

& 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。 &(AND) |(OR) 就不提了最常用的东西 会编程就会。 &操作的话是当 两个数需要同时为1的时候才会保留。 例如 0000 0100 & 0000 1111 => 0000 0100 => 4 | 操作的话是当 两个数同时为1或者1个为1一个不为1的时候会保留。 例如 0000 0100 | 0000 1111 => 0000 1111 => 15 ^(XOR) 在go语言中XOR是作为二元运算符存在的: 但是如果是作为一元运算符出现,他的意思是按位取反,例如 pa...阅读全文

博文 2017-01-07 08:00:02 henrylee2cn

golang 位操作

package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1...阅读全文

博文 2014-12-20 19:00:01 moodlxs

golang os

const ( O_RDONLY int = syscall.O_RDONLY // open the file read-only. O_WRONLY int = syscall.O_WRONLY // open the file write-only. O_RDWR int = syscall.O_RDWR // open the file read-write. O_APPEND int = syscall.O_APPEND // append data to the file when writing. O_CREATE int = syscall.O_CREAT // create a new file if none exists. O_EXCL int = syscall.O_...阅读全文

博文 2014-10-04 19:26:01 ggaaooppeennngg

golang 位运算

http://blog.opskumu.com/golang-bitwise.html 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算). 位操作符 一、简介 关于位运算的操作,维基百科关于 位操作符 的理论介绍已经非常清楚了。关于 Golang 的位运算其实和 C 语言比较类似,除了取反的操作和 C 语言有点区别,Golang 使用的是^x,而 C 使用的则是 ~x取反。 二、概念 << [ 左移 ] 1 << 2 == 4输出 0100 ,相比右移更常见,移位后空缺的部分全部填0 >> [ 右移 ] 10 >>...阅读全文

博文 2016-03-10 15:00:03 leonpengweicn

go 最大的无符号数

这里其实主要是翻译http://blog.golang.org/constants,其中An exercise: The largest unsigned int 部分。 如何构造最大的无符号数。对于确定位数的无符号数,只要移位即可,例如:对于uint32,只要const MaxUint32 = 1<<32 - 1 。 但是,对于不确定位数的uint,就不能这样了,其实,我们知道,最大的无符号数和-1在位数上是一样的。但是,无论是 const MaxUint uint = -1 // Error: negative value , 还是const MaxUint uint = uint(-1) // Error: negative value ,都不能通过编译,原因自然是类型与范围的冲突了。...阅读全文

博文 2015-12-22 04:00:00 lmxmimihuhu

Go 位运算

// xuhh_go_位运算符 project main.go /* 位移操作 << : 向左移位 可以看做是 乘以2的几次方 位移操作 >> : 向右移位 可以看做是 除以2的几次方 and操作 & : 都为1 才是1 or 操作 | : 只要有一个是1 那么就是1 取反 ^ :有一个为1 则 就是1 两个1 或者两个0 全是 0 标志位操作 &^ : a &^ b = (a^b) & b 其实就是清除标记位 (将a中为1的位 如果b中相同位置也为1,则将a中该位置修改为0,a中其他位不变) */ package main import ( . "fmt" ) func main() { var p = Person{"xuhh", "12"} Println(p) const a = 2...阅读全文

博文 2016-03-17 12:00:01 xuheazx

golang begin

1. install go 2. configure sublimehttp://blog.csdn.net/cyxcw1/article/details/10329481 3.io package 1) io.Reader 1 // io.Reader 接口示例 2 package main 3 4 import ( 5 "fmt" 6 "io" 7 "os" 8 "strings" 9 ) 10 11 func main() { 12 FOREND: 13 for { 14 readerMenu() 15 16 var ch string 17 fmt.Scanln(&ch) 18 var ( 19 data []byte 20 err error 21 ) 22 switch stri...阅读全文

博文 2014-10-04 19:26:01 harrysun

P2P GO Client角色的协商

1 P2P GO Client协商流程  协商流程 P2P GO/Client的协商流程只需要简单的几步,如下图: P2P连接发起端:指在P2P连接过程中主动发起P2P连接的机子,用A表示; P2P连接接受端:指在P2P连接过程中接受P2P连接的机子,用B表示; 图1 P2P GO/Client协商流程 如上图所示: 1、 首先A在P2P连接初始化准备完成后,发送一个“GO Negotiation Request”给B; 2、 而这时候,B并没有准备好,这时B先保存下A的协商信息,然后发送一个“GO Negotiation Response”给A,该response包含有B的协商信息,但在该response中,B把状态state设置为P2P_SC_FAIL_INFO_CURRENTLY_U...阅读全文

博文 2016-09-17 05:00:02 zjli321

linux-golang编译器安装与配置

golang编译器安装与配置 golang目前有两种编译,一个是golang官方提供的,另一个是gnu提供的gccgo; golang官方编译器安装与配置 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get install bison gawk gcc libc6-dev make 安装mercurial工具,目的使用hg命令来提取golang的源代码 $ sudo apt-get install mercurial 代取提取,如果您的网速比较慢的话,此步要多花点时间 $ hg clone -u release https://go.googlecode.com/hg/ go 编译golang $ cd go/src $ ....阅读全文

博文 2016-04-02 14:00:01 shuanger_

正则表达式

匹配纯文本 Ben Hello, my name is Ben. Please visit my website at http://www.forta.com. 匹配任意字符(默认模式不匹配\n,单行模式可以匹配\n) a.c abc acc a2c.a.\.xls na1.xls na2.xls前面两个点任意字符 ,最后一个转义点, . 和 \ 等都叫做元字符(metacharacter),表示这个字符有特殊含义,而不是字符本身的含义,如果我们要匹配元字符的话,我们需要对元字符进行转义 [] 字符集,对应位置可以是字符集中的任意字符,字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c] ,第一个字符如果是^则表示取反,如[^abc];所有特殊字符在字符集中都失去原有的特殊...阅读全文

博文 2018-12-01 00:34:42 越塔打哭你

/src/pkg/math/abs.go源码阅读兼谈golang与汇编

开头的碎碎念: 对接微信公众平台的时候,开始有个字符串排序,我接触golang毕竟时间尚浅,很多东西都是能从网上找到就直接从网上找,结果就是找了好几个示例代码都不好用,好容易一个好用的,从头开始实现的,代码太多了。我就想,google应该把这些玩意都封装好了吧,不然一个新出的语言只有基础语法,没有强大的标准库,谁用这玩意啊。也就是那时候第一次接触src文件夹,后来发现pkg里的那些go文件是绝好的学习资料。 那么多文件、文件夹从哪开始看呢,我的原则,先找没有依赖性的,也就是没有import的,这么寻摸着就找到了math文件夹。笨方法,从a开始按顺序来呗,这不就碰到了abs.go 难以理解的第12行: // Copyright 2009 The Go Authors. All rights r...阅读全文

博文 2014-10-04 19:26:06 wlts

go语言学习-类型

Go语言内置以下这些基础类型:  布尔类型:bool。  整型:int8、byte、int16、int、uint、uintptr等。  浮点类型:float32、float64。  复数类型:complex64、complex128。  字符串:string。  字符类型:rune。  错误类型:error。 此外,Go语言也支持以下这些复合类型:  指针(pointer)  数组(array)  切片(slice)  字典(map)  通道(chan)  结构体(struct)  接口(interface) 1、type关键字 go语言支持type关键字,可以定义一种类型,这个关键字大体上和C语言的typedef相似,但是有个关键点不同:不是同一个类型。 格式如...阅读全文

博文 2016-04-28 12:00:01 kuoshuang

go变量和数据类型

go语言的基本数据类型 布尔类型:bool 整型:int8、byte、int16、int、uint、uintptr等 浮点类型:float32、float64 复数类型:complex64、complex128 字符串:string 字符类型:rune 错误类型:error int8 表示一个字节长的整形(-128 ~ 127);对应的还有uint8表示非负的一个字节长的整形(0 ~ 255);byte和uint8相同;int 的长度同操作系统相关,32位的系统长度为4个字节,64位系统为8个字节;go语言添加了string为基本类型,这是和java不同的 go语言变量的定义 方式1 : var b1 bool = true 变量定义时,前面添加一个var关键字,整的像javascript类...阅读全文

博文 2016-07-04 02:00:01 sten

位运算计算(go语言)

符号 二进制表示 十进制表示 0110 6 1011 11 & 0010 (上下都是1的话才是1,否则是0) 前后顺序不管,类似加法:1+2=2+1 2 | 1111 (上下都是0的话才是0,否则是1) 前后顺序不管,类似加法:1+2=2+1 15 ^ 1101 (上下数字不一样的话才是1,一样的话是0)前后顺序不管,类似加法:1+2=2+1 13 &^ 0100 (下面的数字是1,则为0,下面的数字为0,则为上面的数字)前后顺序不同结果不同,类似减法:1-2不等于2-1 方法2:先将下面的1011取反为0100,将取反完的0100和上面0110进行&运算,也可得到0100 4 关于&^的计算 上面的数字是6,二进制表示为: 0 1 1 0 下面的数字是11,二进制表示为: 1 0 1 1 ...阅读全文

博文 2014-10-04 19:26:44 waynehu

golang的channel使用

channel sample1 close twice ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据http://play.golang.org/p/vl5d5tkfl7 ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否close i, ok ...阅读全文

博文 2014-10-04 19:26:45 go-skyblue

golang编程之时间编程

本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文

博文 2014-10-04 19:26:10 yavobo

golang esl api

通过ESL 调取FS的状态,比如show calls : 用golang eventsocket 实现 conn, err := eventsocket.Dial("192.168.5.32:8021","ClueCon") if err != nil { this.emitError(so, 413) return "" } ev, _ := conn.Send(fmt.Sprintf("api show calls")) calls := strings.Split(ev.Body, "\n") for i := 1; i < len(calls)-3; i++ { //处理每一条记录 ...阅读全文

博文 2016-01-12 03:00:00 logo-fox

Go语言核心技术(卷一)之2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

博文 2016-03-16 15:00:05 abv123456789

Golang Deco Enco

mproto.go package mproto import ( "bytes" "encoding/binary" "fmt" "reflect" "strconv" ) const ( PT_GR_LUACOMMAND uint32 = 9299 PT_GC_CLEARFACEBOOKBIND uint32 = 32689 PT_GC_CLEARDEVICEBIND uint32 = 7445 PT_GR_BANDACCOUNT uint32 = 29536 ) type GR_LuaCommand struct { LuaCommand string `key:"21868"` } type GC_ClearFacebookBind struct { AccountId int32 ...阅读全文

博文 2015-06-11 03:00:05 freebird92

go语言基础教程2

array 数组声明--var arr [10]int,array由[n]定义。n表示数组大小,type表示数组类型 声明且初始化--arr := [3]int{1,2,3}或者不写大小var arr := [...]int{1,2,3}或者var arr = [3]int{1,2,3},如果不写大小可以用三个点来表示,go会自动识别,var arr[3]int默认是初始化为0。 ps:记住:=和=之间的区别,如果是:=不需要var,如果是=需要var 二维数组初始化a := [2][2]int{ [2]int{1,2}, [2]int{3,4} },a := [2][2]int{ [...]int{1,2}, [...]int{3,4} },a := [2][2]int{ {1...阅读全文

博文 2014-10-04 19:26:42 GODYCA

Go语言之常量与运算符

常量与运算符 常量声明后必须要赋值,在常量声明组中,赋值可以是向上原则 举例: const ( aa1 = 1 bb1 cc1 ) bb1和cc1没有赋值,那么bb1遵循向上原则,值等于aa1,然后cc1遵循向上原则,cc1等于bb1的值,这样三个常量都有了值。 枚举iota const ( aa1 = iota bb1 cc1 ) 当一个常量组使用了iota,枚举时,组成员值开始从0以此递增。也就是说aa1= 0,bb1=1,那么下面怎么说 const ( aa1 bb1 = iota cc1 ) 结果是相同的,只要在这个组里面使用了iota,无论在哪里位置,都是从组第一个常量开始递增。 它遇到const就会重置,例如: const ( aa1 bb1 = iota cc1 = iota ...阅读全文

博文 2016-08-06 19:00:00 little_newBee

golang学习实例-猜拳小游戏

学了一段golang,觉得应该实践一下,写了这个猜拳小游戏,顺带着学习下go testing。 主程序源码: package main import ( "bufio" // 输入输出 "fmt" "math" "math/rand" "os" "strconv" "time" ) //rock, paper, scissors const ( rock int = 1 scissors int = 2 paper int = 3 rockName string = "石头" scissorsName string = "剪刀" paperName string = "布" win int = 1 lose int = -1 draw int = 0 ) // 拳的结构 type Finge...阅读全文

博文 2015-06-17 20:03:59 hnxxwyq

Go语言核心技术(卷一)之2.4-布尔值

布尔值有两种:true和false。if和for语句中的条件都是布尔值,比较运算符== 、<等也会产生一个布尔值。一元运算符! 是逻辑取反操作,所以!true就是false。Go语言提倡简洁的风格,因此我们会将x == true这种表达式直接写成x:if x {..} 。 布尔值可以结合&&(AND) 、|| (OR)一起使用,这两个操作符都有短路特性,如果操作符的左边表达式就能决定结果了,那操作符右边的表达式不会求值:s != "" && s[0] == 'x' 如果s是空字符串,那s[0]会panic,但是因为s为""的时候,&&左边的表达式是false,因此根据短路规则,&&右边的表达式不会求值,也就不会panic。 因为&&比||的优先级更高,所以下面的条件表达式不需要括号:if '...阅读全文

博文 2016-03-16 20:00:02 abv123456789

(转)二进制相关基础

载:https://mp.weixin.qq.com/s?__biz=MzU2NjIzNDk5NQ==&mid=2247483797&idx=1&sn=18579f6a4e319b6adefc02520a59e2bc&scene=21#wechat_redirect golang的基本数据类型-整型 种类  有符号(负号)  1. int8 int16 int32 int64 无符号(无符号)  1. uint8 uint16 uint32 uint64 架构特定(取决于系统位数)  1. int uint 类型别名  1. Unicode字符rune类型等价int32  2. byte等价uint8 特殊类型  1. uintptr,无符号整型,  2. 由系统决定占用位大小,足够存放指针...阅读全文

博文 2018-08-13 18:35:56 one_zheng

Go语言核心之美 2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

golang uint8转int8越界

var i uint8 = 128 fmt.Println(int8(i)) //结果为-128 很显然这里出现了越界的情况,int8类型的范围是-128~127,所以uint8类型的128转换为int8类型时会出现越界。那么这里是怎么出现-128结果的呢? 原来计算机中都是以补码进行存储的。uint8类型的128,原码为1000 0000,补码也为1000 0000;当转换为int8类型时,补码还是1000 0000,这里就变成了已知补码求原码;首位代表符号位,不做处理,其余各位按位取反再加1,截断之后可以得出1000 0000,即-128...阅读全文

博文 2019-04-23 04:34:41 杜子龙

Go语言的bit clear操作

以下摘自The Go Programming Language: The &^ operator is bit clear (AND NOT): in the expression z = x &^ y, each bit of z is 0 if the corresponding bit of y is 1; otherwise it equals the corresponding bit of x. 即z = x &^ y运算相当于先把y取反(针对y的每个bit:0变成1,1变成0),然后再和x进行&运算。参考下例: package main import "fmt" func main(){ var x uint8 = 1 var y uint8 = 1 << 2 fmt.Prin...阅读全文

博文 2017-06-24 19:32:57 肖楠

[用Golang刷LeetCode之 4] 476. Number Complement

题目描述 Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer's binary representation. Example 1: Input: 5 Output: 2 Explanation: The b...阅读全文

博文 2017-08-14 09:05:01 miltonsun

Go语言核心之美 2.4-布尔值

布尔值有两种:true和false。if和for语句中的条件都是布尔值,比较运算符== 、<等也会产生一个布尔值。一元运算符! 是逻辑取反操作,所以!true就是false。Go语言提倡简洁的风格,因此我们会将x == true这种表达式直接写成x:if x {..} 。 布尔值可以结合&&(AND) 、|| (OR)一起使用,这两个操作符都有短路特性,如果操作符的左边表达式就能决定结果了,那操作符右边的表达式不会求值:s != "" && s[0] == 'x' 如果s是空字符串,那s[0]会panic,但是因为s为""的时候,&&左边的表达式是false,因此根据短路规则,&&右边的表达式不会求值,也就不会panic。 因为&&比||的优先级更高,所以下面的条件表达式不需要括号:if '...阅读全文

博文 2017-10-27 20:58:35 erlib

学习笔记——原码、反码、补码

一、原码表示法 原码表示法是一种最简单的机器数表示法,其最高位为符号位,符号位为“0”时表示该数为正,符号位为“1”时表示该数为负,数值部分与真值相同。若真值为纯小数,它的原码形式为Xs,.X1X2X3...Xn,其中Xs表示符号位。原码定义为: example-1: 若:X = 0.0110 则:[X]原 = X = 0.0110 若:X = -0.0110 则:[X]原 = 1 - X = 1 - (-0.0110) = 1 + 0.0110 = 1.0110 若真值为纯整数,它的原码形式为XsX1X2X3...Xn,其中Xs表示符号位。原码的定义为: example-2: 若:X = 1101 则:[X]原 = X = 01101 若:X = -1101 则:[X]原 = 2^n - ...阅读全文

博文 2018-12-30 09:34:44 Lierba

兄弟连区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理一

区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # 椭圆曲线加解密及签名算法的技术原理及其Go语言实现 椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。 相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。 据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。 椭圆曲线在密码学中的使用,是1985年由Neal Koblitz和...阅读全文

博文 2018-11-09 13:51:31 ITXDL

Go语言核心之美 2.1-整数

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50902368 第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数...阅读全文

Go语言核心之美 2.4-布尔值

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50907257 布尔值有两种:true和false。if和for语句中的条件都是布尔值,比较运算符== 、<等也会产生一个布尔值。一元运算符! 是逻辑取反操作,所以!true就是false。Go语言提倡简洁的风格,因此我们会将x == true这种表达式直接写成x:if x {..} 。 布尔值可以结合&&(AND) 、|| (OR)一起使用,这两个操作符都有短路特性,如果操作符的左边表达式就能决定结果了,那操作符右边的表达式不会求值:s != "" && s[0] == 'x' 如果s是空字符串,那s[0]会panic,但是...阅读全文

博文 2019-03-17 13:12:07 erlib

ARTS第四周打卡(2019.04.08~2019.04.14)

所谓A(Algorithm)R(Review)T(Tips)S(Share): . 每周至少做一个 leetcode 的算法题 . 阅读并点评至少一篇英文技术文章 . 学习至少一个技术技巧 . 分享一篇有观点和思考的技术文章 3 week Algorithm 算法 # # @lc app=leetcode.cn id=5 lang=python # # [5] 最长回文子串 # # https://leetcode-cn.com/problems/longest-palindromic-substring/description/ # # algorithms # Medium (24.34%) # Total Accepted: 48.5K # Total Submissions: 195...阅读全文

Go Slice 最大容量大小是怎么来的

文地址:Go Slice 最大容量大小是怎么来的 前言 在《深入理解 Go Slice》中,我们提到了 “根据其类型大小去获取能够申请的最大容量大小” 的处理逻辑。今天我们将更深入地去探究一下,底层到底做了什么东西,涉及什么知识点? Go Slice 对应代码如下: func makeslice(et *_type, len, cap int) slice { maxElements := maxSliceCap(et.size) if len < 0 || uintptr(len) > maxElements { ... } if cap < len || uintptr(cap) > maxElements { ... } p := mallocgc(et.size*uintptr(ca...阅读全文

博文 2019-01-06 20:34:43 煎鱼

go语言渐入佳境[6]-operator运算符

运算符和其他语言一样,Go语言支持多种运算符,用于对变量进行运算。12345678910111213package mainimport "fmt"func main(){ //math() //relation() //logic() //wei() Assign()}算术运算符123456789101112func math(){ a := 4 b:=2 fmt.Printf("a+b的结果为:%d\n", a+b) fmt.Printf("a-b的结果为:%d\n", a-b) fmt.Printf("a*b的结果为:%d\n", a*b) fmt.Printf("a/b的结果为:%d\n", a/b)}关系运算符123456789101112131415161718192021222...阅读全文

博文 2018-12-04 00:35:13 jonson_jackson

Golang中位运算的详细理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kwame211/article/details/79193164 前言: 位运算可能在平常的编程中使用的并不多,但涉及到底层优化,一些算法及源码可能会经常遇见。今天就学习一下常用的位运算 一、常用的位运算: & 与 AND | 或OR ^ 异或XOR &^ 位清空 (AND NOT) << 左移 >> 右移 二、位运算的用法: 位运算都是在二进制的基础上进行运算的,所以在位运算之前要先将两个数转成二进制 1. & & 只有两个数都是1结果才为1 例:var i uint8 = 20 var j uint8=15 求i&j i转成二进制为0001 0100, j转成二进制为0000 1111 0...阅读全文

博文 2019-01-14 14:31:35 kwame211

位运算

位运算思考题 func main() { var a int = 1 >> 2 //位右移 var b int = -1 >> 2 var c int = 1 << 2 //位左移 var d int = -1 << 2 //a,b,c,d 结果是多少 fmt.Println("a=", a) fmt.Println("b=", b) fmt.Println("c=", c) fmt.Println("d=", d) } func main() { fmt.Println(2&3) //位与 fmt.Println(2|3) //位或 fmt.Println(13&7) fmt.Println(5|4) //? fmt.Println(-3^3) //?//位异或 } 原码、反码、补码 对于...阅读全文

博文 2019-02-19 12:34:42 StevenQin

go语言20小时从入门到精通(三、运算符)

##3.1 算术运算符 ##3.2 关系运算符 ##3.3 逻辑运算符 ##3.4 位运算符 位运算参考 &与:需要两个输入数的同一位都为1时才为1,其余为0 |或:两个输入数的同一位都不为0(即任意一个为1,或都为1)为1,其余为0 ^异或:两个输入数的同一位不同为1,如果相同就设为0 ~取反:对一个操作数的每一位都取反 <<左移:头部一位被丢弃位,尾部一位空位用0填充 >>右移:尾部一位被丢弃,头部一位空位用0填充 ##3.5 赋值运算符 ##3.6 其他运算符 3.7 运算符优先级 在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。 下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低...阅读全文

博文 2019-09-18 01:34:45 后端小黑胖

linux-golang编译器安装与配置

golang编译器安装与配置 golang目前有两种编译,一个是golang官方提供的,另一个是gnu提供的gccgo; golang官方编译器安装与配置 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get install bison gawk gcc libc6-dev make 安装mercurial工具,目的使用hg命令来提取golang的源代码 $ sudo apt-get install mercurial 代取提取,如果您的网速比较慢的话,此步要多花点时间 $ hg clone -u release https://go.googlecode.com/hg/ go 编译golang $ cd go/src $ ....阅读全文

博文 2018-08-13 19:31:32 shuanger_