2022-4-11 实习Day11

1、辅助工具数据库表操作搭建完成,辅助工具操作手册阅读完毕。–2小时 100%
2、tf-exi开发包结构注释规范标记检验 –3小时 50%
3、新一代贸易金融系统概要设计说明书阅读完毕 –1小时 100%

Golang编程学习(part 6)

1、位运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import "fmt"

func main() {
0000 0001 => 0000 0000
var a int = 1 >> 2

1000 0001 => 1111 1110 1111 1111
var b int = -1 >> 2

1000 0001 => 1111 1110 1111 1111
var c int = -1 >> 3

0000 0001 => 0000 0100
var d int = 1 << 2

1000 0001 => 1111 1110 1111 1111 1111 1100 =>(反)1111 1011=>(原)1000 0100
var e int = -1 << 2

1000 0001 => 1111 1110 1111 1111 1111 1000 =>(反)1111 0111=>(原)1000 1000
var f int = -1 << 3

//a,b,c,d 结果是多少
fmt.Println("a=", a) // a= 0
fmt.Println("b=", b) // b= -1
fmt.Println("c=", c) // c= -1
fmt.Println("d=", d) // d= 4
fmt.Println("e=", e) // e= -4
fmt.Println("f=", f) // f= -8

fmt.Println(2 & 3) // 2
fmt.Println(2 | 3) // 3
fmt.Println(13 & 7) // 5
fmt.Println(5 | 4) // 5
fmt.Println(-3 ^ 3) // -2

}

2、源码、反码、补码

对于有符号的而言

① 二进制的最高位是符号位:0表示正数,1表示负数

1 ==> 0000 0001 -1 ==>10000 0001

② 正数的原码、反码、补码都是一样,负数的反码=它的原码符号位不变,其他位取反【0—->1,1—->0】

1 ==> 原码【0000 0001】 反码【0000 0001】 补码【0000 0001】

-1 ==> 原码【1000 0001】 反码 【1111 1110】 补码 【1111 1111】

③ 负数的补码 = 它的反码+1
④ 0的反码,补码都是0
⑤ 在计算机运算的时候,都是以补码的方式来运算的。

3、计算 -2^2

-2的原码 1000 0010 ==> 反码 1111 1101 ==> 补码 1111 1110

2的补码 0000 0010

-2^2 1111 1110 ^ 0000 0010 ==> 1111 1100(补码) ==> 1111 1011(反码) ==> 1000 0100(原码)【-4】

4、Golang中有两个移位运算符:<<、>> 左移和右移

运算规则:

右移运算符 >>: 低位溢出,符号位不变,并用符号位补溢出的高位。

左移运算符 <<: 符号位不变,低位补0