博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go 获取键盘输入,进制转换
阅读量:4665 次
发布时间:2019-06-09

本文共 3965 字,大约阅读时间需要 13 分钟。

#### Go 获取键盘输入,进制转换 最近爱上<
<珂矣的心灵独语>
> 连续听一下礼拜也不觉得厌: 喜欢她的宁静与安然,喜欢她的坦荡与欢喜,喜欢她的禅意与智慧; ***撑着一苇江湖,耕烟处, 入时无*** ##### 获取键盘输入
func Scanln(a ...interface{})(n int,err error)在换行时停止扫描,也就是说通过换行来获得输入结束信号func Scanf(format string, a ...interface{}) (n int,err error)从标准输入扫描文本,根据format 参数设定的格式将成功读取到空白分隔的值保存到传递给本函数的参数,返回成功扫描的个数和遇到的错误;

  

案例:
// 从控制台获取三个数,计算三个数之和package mainimport "fmt"func main(){   var a,b,c int   fmt.Print("please input the first number:")   fmt.Scanln(&a) // 结束输入回车即可   fmt.Print("please input the second number:")   fmt.Scanln(&b)   fmt.Print("please input the third number:")   fmt.Scanln(&c)   fmt.Printf("a=%d\tb=%d\tc=%d\tcount=%d",a,b,c,a+b+c)}
 
package mainimport "fmt"func main(){   var a,b,c int   fmt.Print("please input first second third number: ")   fmt.Scanf("%d %d %d",&a,&b,&c)   fmt.Printf("a=%d\tb=%d\tc=%d\tcount=%d",a,b,c,a+b+c)}

  

##### 进制 对于一个整数, 有四种表示方式: 1. 二进制:0,1,在Go中不能直接使用二进制表示一个整数 2. 十进制:0-9 3. 八进制:0-7,以数字0开头表示 4. 十六进制: 0-9,A-F,以0x或0X开头表示;
package mainimport "fmt"func main(){   var a int = 10   // 以二进制输出   fmt.Printf("%b\n",a)   // 八进制表示   var b int = 020   fmt.Println(b) //16   // 十六进制表示   var c int = 0x1A   fmt.Println(c)}

 ---

*** 茫茫的人海里 又是谁 静静数黄昏 *** --- ##### 进制转换 1. 二进制转十进制 从最低位开始(最右边),将每位上的数提取出来,乘以2的(位数-1)次方然后求和:   如: 1001 = 1\*2^3 + 0\*2^2 + 0\*2^1 + 1\*2^0 = 9 2. 八进制转十进制 从最低位开始(最右边),将每位上的数提取出来,乘以8的(位数-1)次方然后求和:   如: 0223 = 2\*8^2 + 2\*8^1 + 3 *8^0 = 128 + 16 + 3 = 147 3. 十六进制转十进制 从最低位开始(最右边),将每位上的数提取出来,乘以16的(位数-1)次方然后求和:   如: 0x2A = 2\*16^1 + 10\*16^0 = 32 + 10  = 42 4. 十进制转二进制  将数字不断除以2,直到商为0,然后将每步得到的余数倒过来,就是对应的二进制  如: 23 转换成二进制  23 / 2 = 11 余 1   11 / 2 = 5 余 1   5 / 2 = 2 余 1   2 / 2 = 1 余 0 1 / 2 = 0 余 1   则23 转换成二进制  = 10111 5. 十进制转八进制 将数字不断除以8,直到商为0,然后将每步得到的余数倒过来,就是对应的八进制  如: 23 转换成八进制  23 / 8 = 2 余 7   2 / 8 = 0 余 2   则23 转换成八进制  = 027 6. 十进制转十六进制 将数字不断除以16,直到商为0,然后将每步得到的余数倒过来,就是对应的十六进制  如: 123 转换成十六进制  123 / 16 = 7 余 11   7 / 16 = 0 余 7   则23 转换成十六进制  = 0x7b 7. 二进制转八进制 将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可  如: 10110111 转换成八进制 010 110 111 = 267 8. 二进制转十六进制 将二进制数每四位一组(从低位开始组合),转成对应的十六进制数据即可  如: 10110111 转换成十六进制 1011 0111 = 0xb7  9. 八进制转二进制 将八进制数每一位转成对应的一个3位的二进制数即可  如: 012 = 001 010 10.十六进制转二进制 将十六进制每一位转成对应的一个4位的二进制数即可 如:0xc81 = 1100 1000 0001  ##### 位运算 在进行位运算学习前先来了解一下什么是原码,反码,补码;   1. 对于有符号的而言:  二进制最高位是符号位: 0 为正数,1为负数   1 --> [0000 0001]  -1 --> [1000 0001] // 二进制最高位是符号位, 2. 正数的原码,反码,补码都一样;  3. 负数的反码=它的符号位不变,其它位置取反    -1 -->原码[1000 0001] 反码[1111 1110] 补码[1111 1111] 4. 负数的补码=它的反码加1 5. 0 的反码,补码都是0 6. 计算机在运算的时候都是以补码的方式来运算的;   如: -1 + 3   -1 的补码:  [1111 1111]   3  的补码:  [0000 0011]  结果的补码: [0000 0010]-->反码[0000 0010] --> 原码[0000 0010] = 2 ##### 位运算符和移位运算符 &: 按位与  两位全为1, 结果为1,否则为0 |: 按位或  两位全为0,结果为0 ,否则为1 ^: 按位异或 两位一个为0,一个为1,结果为1,否则为0
package main  import "fmt"  func main() {   var a int = 10   var b int = -2   // -2 的原码: [1000 0010]   // -2 的反码: [1111 1101] 符号位不变,其它位取反   // -2 的补码: [1111 1110] 反码+1   // 10 的补码: [0000 1010]   // 结果的补码: [0000 1010]--> 原码[0000 1010] = 10   fmt.Println(a&b) // 10    // 结果的补码: [1111 1110] --> 反码[1111 1101] --> 原码[1000 0010] = -2   fmt.Println(a|b) // -2    // 结果的补码: [1111 0100] --> 反码[1111 0011] --> 原码[1000 1100] = -12   fmt.Println(a^b)// -12 }

  

移位运算符   << , >> 左移,右移   规则:   ">>" 右移运算, 低位溢出,符号位不变,并用符号位补溢出的高位   "<<" 左移运算, 符号位不变,低位补0
package main import "fmt" func main() {   var a int = 10   // 10 的补码: [0000 1010] --> 右移3位的补码: [0000 0001] = 1   fmt.Println(a>>3) // 1   // 10 的补码: [0000 1010] --> 左移3位的补码: [0101 0000] = 80   fmt.Println(a<<3) // 80   var b int = -2   // -2 的原码: [1000 0010] --> 反码[1111 1101] --> 补码[1111 1110] --> 右移3 位的补码[1111 1111]   // 结果的反码: [1111 1110] --> 原码[1000 0001] = -1   fmt.Println(b>>3) // -1   // -2 的原码: [1000 0010] --> 反码[1111 1101] --> 补码[1111 1110] --> 左移3 位的补码[1111 0000]   // 结果的反码: [1110 1111] --> 原码[1001 0000] = -16   fmt.Println(b<<3) // -16 }

  

以上进制部分是基础的计算机知识, 并非Go 语言特有, 还是很有必要学习一下的, 加油! 个人微信公众号: "开胃咸菜", 在同步更新, 微信公众号文章为最新,欢迎大家搜索关注,一同交流学习,谢谢

转载于:https://www.cnblogs.com/Mail-maomao/p/11376155.html

你可能感兴趣的文章
HDU 1203 I NEED A OFFER!(0-1背包)
查看>>
Sass学习笔记
查看>>
盒子模型及练习
查看>>
将千克转换成磅 Exercise05_03
查看>>
javascript权威指南学习笔记
查看>>
wannafly 练习赛10 f 序列查询(莫队,分块预处理,链表存已有次数)
查看>>
201571030323 四则运算
查看>>
实验六
查看>>
扁平化团队的实质
查看>>
让IIS 7显示ASP的详细错误信息-无论什么样的代码错误,只显示“500 - 内部服务器错误解决...
查看>>
图像处理复习整理(4.图像去噪)
查看>>
ResultSet的getInt(),getString()方法
查看>>
python全栈开发_day14_常见语法糖,递归和匿名函数
查看>>
MongoDB命令及SQL语法对比
查看>>
给vs2012换肤
查看>>
expdp/impdp使用sysdba权限迁移数据
查看>>
把2列相加的方法
查看>>
Message对象
查看>>
Mircrosoft 邮箱帐号的故事
查看>>
【DL】几种参数优化方法的比较
查看>>