进制相关

进制转换

进制转换

十进制

二进制

八进制

十六进制

1

0000 0001

1

1

2

0000 0010

2

2

3

0000 0011

3

3

4

0000 0100

4

4

5

0000 0101

5

5

6

0000 0110

6

6

7

0000 0111

7

7

8

0000 1000

10

8

9

0000 1001

11

9

10

0000 1010

12

a

11

0000 1011

13

b

12

0000 1100

14

c

13

0000 1101

15

d

14

0000 1110

16

e

15

0000 1111

17

f

16

0001 0000

20

10

17

0001 0001

21

11

18

0001 0010

22

12

19

0001 0011

23

13

20

0001 0100

24

14

 二进制计算

一位六进制等于四位二进制

一位八进制等于三位二进制

正数的反码补码都一样

负数的反码,等于原码除了符号位取反,

负数的补码等于反码加1

按位与 :补码都为1,结果为1,结果转回原码十进制

按位或:补码有一个为1,就为1,结果转回原码十进制

按位异:补码不同就为1,结果转回原码十进制

 

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

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

 位运算

package main

import "fmt"

//https://www.cnblogs.com/wxisme/p/8858514.html
//位运算

func main() {
    w5()
}

//相与运算
func w1() {
    a := 3
    fmt.Printf("a二进制%b\n", a)

    b := 7
    fmt.Printf("b二进制%b\n", b)
    c := a & b
    /*
        都为1结果为1
        3      11
        7     111
        结果    11
    */
    fmt.Println("c=", c)
}

//按位或操作 |
func w2() {
    a := 3
    fmt.Printf("a二进制%b\n", a)
    b := 17
    fmt.Printf("b二进制%b\n", b)
    c := a | b

    /*
       只要有一个为1就为1
       3        11
       17    10001
             10011=19
    */

    fmt.Println("c=", c)

}

//按位异或操作 ^
func w3() {
    a := 33
    fmt.Printf("a二进制%b\n", a)
    b := 12
    fmt.Printf("b二进制%b\n", b)
    c := a ^ b

    /*
       不同就为1
       33      100001
       17      001100
               101101=45
    */

    fmt.Println("c=", c)

}

//左移运算符(<<)
func w4() {
    a := 3
    fmt.Printf("a二进制%b\n", a)
    b := 2
    fmt.Printf("b二进制%b\n", b)
    c := a << b

    /*
           不同就为1
           33      0011
        左移2       1100=12

    */

    fmt.Println("c=", c)

}

//右移运算符(>>)
func w5() {
    a := 3
    fmt.Printf("a二进制%b\n", a)
    b := 2
    fmt.Printf("b二进制%b\n", b)
    c := a >> b
    /*
           不同就为1
           33      0011
        右移2       0000
    */
    fmt.Println("c=", c)

}


/*
二进制计算
参考
https://www.cnblogs.com/shamo89/p/9846385.html
*/
View Code

 

12>>2
0000 1100
0000 0011=3
-12>>2
 原码        反码       补码
 1000 1100   1111 0011  1111 0100
移位后1111 1101
 反码 1111 1100
原码 1000 0011
十进制-3
View Code
posted @ 2019-12-25 17:33  jiuchen  阅读(253)  评论(0编辑  收藏  举报