#### 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 intfmt.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 main
import "fmt"
func main(){var a,b,c intfmt.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-93. 八进制: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 = 020fmt.Println(b) //16// 十六进制表示var c int = 0x1Afmt.Println(c)
}

 ---

*** 茫茫的人海里 又是谁 静静数黄昏 ***---##### 进制转换1. 二进制转十进制 从最低位开始(最右边),将每位上的数提取出来,乘以2的(位数-1)次方然后求和:   如: 1001 = 1\*2^3 + 0\*2^2 + 0\*2^1 + 1\*2^0 = 92. 八进制转十进制从最低位开始(最右边),将每位上的数提取出来,乘以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  = 424. 十进制转二进制  将数字不断除以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 转换成八进制  = 0276. 十进制转十六进制将数字不断除以16,直到商为0,然后将每步得到的余数倒过来,就是对应的十六进制  如: 123 转换成十六进制  123 / 16 = 7 余 11   7 / 16 = 0 余 7   则23 转换成十六进制  = 0x7b7. 二进制转八进制 将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可  如: 10110111 转换成八进制 010 110 111 = 267 8. 二进制转十六进制将二进制数每四位一组(从低位开始组合),转成对应的十六进制数据即可  如: 10110111 转换成十六进制1011 0111 = 0xb7  9. 八进制转二进制 将八进制数每一位转成对应的一个3位的二进制数即可  如: 012 = 001 01010.十六进制转二进制将十六进制每一位转成对应的一个4位的二进制数即可 如:0xc81 = 1100 1000 0001  

##### 位运算在进行位运算学习前先来了解一下什么是原码,反码,补码;   1. 对于有符号的而言:  二进制最高位是符号位: 0 为正数,1为负数   1 --> [0000 0001]  -1 --> [1000 0001] // 二进制最高位是符号位,2. 正数的原码,反码,补码都一样;  3. 负数的反码=它的符号位不变,其它位置取反    -1 -->原码[1000 0001] 反码[1111 1110] 补码[1111 1111]4. 负数的补码=它的反码加15. 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 mainimport "fmt"func main() {var a int = 10var b int = -2// -2 的原码: [1000 0010]// -2 的反码: [1111 1101] 符号位不变,其它位取反// -2 的补码: [1111 1110] 反码+1// 10 的补码: [0000 1010]// 结果的补码: [0000 1010]--> 原码[0000 1010] = 10fmt.Println(a&b) // 10// 结果的补码: [1111 1110] --> 反码[1111 1101] --> 原码[1000 0010] = -2fmt.Println(a|b) // -2// 结果的补码: [1111 0100] --> 反码[1111 0011] --> 原码[1000 1100] = -12fmt.Println(a^b)// -12}

  

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

  

 以上进制部分是基础的计算机知识, 并非Go 语言特有, 还是很有必要学习一下的, 加油!

个人微信公众号: "开胃咸菜", 在同步更新, 微信公众号文章为最新,欢迎大家搜索关注,一同交流学习,谢谢

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

Go 获取键盘输入,进制转换相关推荐

  1. 单片机进制转换实现(报告+源码)

    用4x4矩阵及LCD1602液晶显示实现各进制转换 摘要:在计算机及其相关的各领域中,数制的二进制.八进制.十进制和十六进制之间的相互转换可谓无处不在.为满足相关领域人员对进制转换计算的需求,特此利用 ...

  2. Java基础--数据类型及进制转换

    1.Dos常用命令符 -d: 盘符切换(切换到哪个盘输入那个盘符) -dir(directory) 列出当前目录下 的文件以及文件夹 -md(make directory) 创建目录,md之后空格加文 ...

  3. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  4. 16进制转string java_java的2/10/16进制转换和字符串数字转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  5. 万能进制转换计算器_这7款计算器APP一定会让你感到惊艳!

    " 现在的手机基本都会有自己内置的计算器,功能各有千秋,但是总会有些功能缺失,让人非常遗憾,也因此会有非常好用的计算器APP被开发出来,这里就推荐几个非常不错的计算器APP. 1.小米计算器 ...

  6. 学习笔记7-C语言-进制转换、原返补、位运算、函数

    进制转换 为什么要使用二.八进制.十六进制?因为现在的CPU只能识别高低两种电流,因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别,但不方便人们书写.记录,所以把二进制数据转换成八进制是 ...

  7. linux 大数字 进制转换,Linux下用bc快速进行数字进制转换

    介绍如何在Linux下用bc命令进行快速的数字进制转换. 我想Windows里,数字进制转换最方便的就是自带的calc计算器,但是它原没有我们可爱的Linux方便.Linux下,我们在term里敲 几 ...

  8. python 整数逆位运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  9. 计算机系统-理论-CPU操作/处理数据的方式/寻址方式/局部性原理/位运算/进制转换

    在计算机中,cpu将一切硬件,都看成内存,各种硬件在CPU的眼中都是下面这样子的 CPU对硬件的操作,其实就是和这些硬件的内存或者BIOS进行交互,CPU能做且只能做三件事 1.将某个地址中存储的字节 ...

最新文章

  1. Ubuntu中C代码静态检查工具Splint的安装配置和使用
  2. 介绍一篇关于session的好文章,写的很详细
  3. tomcat-users.xml 配置(转的)
  4. 编程基础 垃圾回收_编程中的垃圾回收指南
  5. 总结替换jar包中指定文件的步骤
  6. 【Python】【Python库】Python3.7.2 - 字符串str类 (1)
  7. linux期中测试答案 版本号,Linux认证测试题含答案
  8. 打游戏时领悟了“向死而生”,这个AI算法真的不虚强化学习
  9. 在.NET 3.5中使用Parallel.For()(转帖)
  10. 目录:常用沉降预测算法
  11. 宽带拨号上服务器无响应,宽带拨号服务器无响应(图文)
  12. Cloud E随笔-后端_piece3--实现登录功能
  13. mmdetection3d 训练
  14. 配置ABP的redis
  15. MySQL知道出生日期如何计算年龄
  16. 使用安全杀毒软件禁止单个程序联网的方法,超详细
  17. 【Axure教程】中继器版穿梭表格
  18. 只有浏览器显示找不到服务器dns
  19. TexMaker(Latex编辑器)软件的“文献引用”操作:Xelatex方式运行的操作方法
  20. 为企业数据安全保驾护航

热门文章

  1. sql如何获取全部的索引名称_这句简单的sql,如何加索引?颠覆了我多年的认知...
  2. 【排序算法】——图解双轴快排(建议收藏)
  3. Python的捕虫笔记
  4. Spring创建Bean的3种方式
  5. quercus mysql_14.5 Quercus 原理及展望
  6. mysql 类似oracle,mysql – 制作类似于Oracle的seqences的机制
  7. mybatis 依赖于jdbc_Mybatis和JDBC区别
  8. linux+网卡驱动社区,Linux下如何确定网卡所使用的驱动程序
  9. nbu无法运行java控制台_Netbackup:nbu常见错误及故障解决
  10. KNN识别手写数字MNIST