Go语言基本语法 1 二进制八进制16进制




## 一、二进制、八进制、十进制、十六进制【扩展内容】


### 1.1 进制


二进制:逢二进一,数值只有0和1。


八进制:逢八进一,数值有0,1,2,3,4,5,6,7


十进制:逢十进一,数值有0,1,2,3,4,5,6,7,8,9


十六进制:逢十六进一,数值有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F


### 1.2 进制转换


二进制、八进制、十六进制转为十进制


十进制转为二进制、八进制、十六进制


### 1.3 原码,反码,补码


#### 1.3.1 机器数和真值


机器数:一个数在计算机中的二进制表示形式。叫做这个数的机器数。机器数是带符号的,最高位0表示正数,1表示负数。
示例:
比如10进制中的+3,计算机长度为8位。转为二进制是0000 0011。
比如-3,转为二进制是1000 0011。

真值:因为第一位是符号位,所以机器数的形式值就不等于真正的数值。
比如1000 0011,
作为负数可以是-3,作为正数可以说131.
为了区分,将带符号位的计算数对应的真正的数值称为机器数的真值。
### 1.3.2 原码,反码,补码


原码:就是符号位加上真值的绝对值,即第一位表示符号位,其余位表示值。
+1 = [0000 0001]原
-1 = [1000 0001]原
原码是人脑最容易理解和计算的表示方式.

反码:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各位按位取反。
+1 = [0000 0001]原 = [0000 0001]反
-1 = [1000 0001]原 = [1111 1110]反
一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。

补码:正数的补码是其本身,负数的补码是在原码的基础上,符号位不变,其余各位取反后+1。
+1 = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
-1 = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
> 于是人们开始探索 将符号位参与运算, 并且只保留加法的方法. 首先来看原码。计算十进制的表达式: 1-1=0
>
> 1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2
>
> 如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.
>
> 为了解决原码做减法的问题, 出现了反码。计算十进制的表达式:
>
> 1-1=0
>
> 1 - 1 = 1 + (-1) 
> = [0000 0001]原 + [1000 0001]原 
> = [0000 0001]反 + [1111 1110]反 
> = [1111 1111]反 = [1000 0000]原 
> = -0
>
> 发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在”0”这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0.
>
> 于是补码的出现, 解决了0的符号以及两个编码的问题:
>
> 1-1 = 1 + (-1) 
> = [0000 0001]原 + [1000 0001]原 
> = [0000 0001]补 + [1111 1111]补 
> = [0000 0000]补=[0000 0000]原
>
> 这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.而且可以用[1000 0000]表示-128:


## 二、变量与常量


### 2.1 什么是变量
变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。


### 2.2 声明变量


var名称类型是声明单个变量的语法。


> 以字母或下划线开头,由一个或多个字母、数字、下划线组成


声明一个变量


第一种,指定变量类型,声明后若不赋值,使用默认值


```go
var name type
name = value
```


第二种,根据值自行判定变量类型(类型推断Type inference)


如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。因此,如果变量具有初始值,则可以省略变量声明中的类型。

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值