Go 获取键盘输入,进制转换

#### Go 获取键盘输入,进制转换

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

  

案例:  
// 从控制台获取三个数,计算三个数之和
package main

import "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 main
import "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-93. 八进制:0-7,以数字0开头表示4. 十六进制: 0-9,A-F,以0x或0X开头表示;  
package main

import "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 = 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 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

时间: 2024-10-27 12:31:59

Go 获取键盘输入,进制转换的相关文章

获取码值和进制转换系统(包括正负数、小数)

获取码值和进制转换 程序由来: 本人发现计算机中的计算器木有将十进制小数转二进制的功能,后来发现一些网站将十进制负数转二进制只是求出整数的二进制,然后前面加"-",这种表示不是真正的负数二进制.于是爱较真儿的我写了一个可以转十进制小数.负数.负数加小数为二进制的系统,供大家学习参考.介于理解代码,代码中运用到了纯拼音.虽然是拼音,但符合代码编写格式.介于个人知识有限,代码如有需要修改和改进的地方,敬请大家评教指正,共同学习. 实现功能: 获取字符的码值,包括中文. 进制转换包括:十进制

获取码值(各种类型字符(中、英)的ASCII)和进制转换系统(包括正负数、小数)

获取码值和进制转换 程序由来: 本人发现计算机中的计算器木有将十进制小数转二进制的功能,后来发现一些网站将十进制负数转二进制只是求出整数的二进制,然后前面加"-",这种表示不是真正的负数二进制.于是爱较真儿的我写了一个可以转十进制小数.负数.负数加小数为二进制的系统,供大家学习参考.介于理解代码,代码中运用到了纯拼音.虽然是拼音,但符合代码编写格式.介于个人知识有限,代码如有需要修改和改进的地方,敬请大家评教指正,共同学习. 实现功能: 获取字符的码值,包括中文. 进制转换包括:十进制

进制转换--Java实现

题目详情 我们通常用的十进制数包含0-9十个数字.假设有一种进制系统包含3种数字,从低到高分别为"oF8",那么从1到9分别表示为F, 8, Fo, FF, F8, 8o, 8F, 88, Foo.给定一种进制的数和两种进制的数字表,请把它从第一种进制转换为第二种进制. 输入格式: 第一行是T表示测测试数据组数.(0<T<=200). 以后T行,每行有3个部分: number number_table1 number_table2 其中number_table1和numbe

进制转换( C++字符数组 )

注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数值,这将能够完整存储数据,但是也相对于代码较长 进制转换只需要两步: R -> 十  或者  十 -> R  (R表示除十进制的任意进制,10表示十进制) 以下是较为完整的全部代码,若是实现如何转换的,主看: void Ten_Other(char[],int,int,char[],int&

进制转换和变量

进制转换和变量 计算机内存存储数据的部位有硬盘和内存 硬盘存储的是可见数据,内存存储的是不可见数据 硬盘,内存所存储的数据都是二进制数据 我们使用的计算机室为了实现数据存储,数据运算,数据管理 [1]我们(程序员)必须了解数据是如何存储到计算机中的 [2]我们(程序员)必须了解,我们如何通过代码将数据存储到计算机中,以及如何使用这些数据 [对于人类]我们人类通常对于十进制数据更加熟悉 [对于计算机]计算机通常用二进制来存储数据,因为二进制对于计算机而言比较容易实现 内存存数数据的基本单元是三极管

一起talk C栗子吧(第七回:C语言实例--进制转换)

各位看官们.大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是生成随机数的样例.这一回咱们说的样例是:进制转换.说到进制预计大家 都不陌生.计算机中的进制有二进制.八进制,十进制,十六进制. 今天咱们将要说的是十进制怎样转换成二进制.八进制和十六进制.在这里我把敲代码的步骤和算法思路 写出来供大家參考. 1.获取用户想要转换的数值和想到转换的进制.这里要检查输入是否正确.这是程序健壮性的体现

【轻院热身赛】级数求和、进制转换

[级数求和] Problem A: 级数求和 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 409  Solved: 240 SubmitStatusWeb Board Description 已知:Sn= 1+1/2+1/3+…+1/n.显然对于任意一个整数K,当n足够大的时候,Sn大于K.现给出一个整数K(1<=k<=15),要求计算出一个最小的n:使得Sn>K. Input 键盘输入 k Output 屏幕输出 n Sample In

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

NOIP2000 进制转换

题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基