zoukankan      html  css  js  c++  java
  • 进制相关

    进制转换

    进制转换

    十进制

    二进制

    八进制

    十六进制

    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
    ", a)
    
        b := 7
        fmt.Printf("b二进制%b
    ", b)
        c := a & b
        /*
            都为1结果为1
            3      11
            7     111
            结果    11
        */
        fmt.Println("c=", c)
    }
    
    //按位或操作 |
    func w2() {
        a := 3
        fmt.Printf("a二进制%b
    ", a)
        b := 17
        fmt.Printf("b二进制%b
    ", b)
        c := a | b
    
        /*
           只要有一个为1就为1
           3        11
           17    10001
                 10011=19
        */
    
        fmt.Println("c=", c)
    
    }
    
    //按位异或操作 ^
    func w3() {
        a := 33
        fmt.Printf("a二进制%b
    ", a)
        b := 12
        fmt.Printf("b二进制%b
    ", b)
        c := a ^ b
    
        /*
           不同就为1
           33      100001
           17      001100
                   101101=45
        */
    
        fmt.Println("c=", c)
    
    }
    
    //左移运算符(<<)
    func w4() {
        a := 3
        fmt.Printf("a二进制%b
    ", a)
        b := 2
        fmt.Printf("b二进制%b
    ", b)
        c := a << b
    
        /*
               不同就为1
               33      0011
            左移2       1100=12
    
        */
    
        fmt.Println("c=", c)
    
    }
    
    //右移运算符(>>)
    func w5() {
        a := 3
        fmt.Printf("a二进制%b
    ", a)
        b := 2
        fmt.Printf("b二进制%b
    ", 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
  • 相关阅读:
    python写的文件同步服务器
    从外部调用Django模块
    python监视线程池
    RabbitMQ手册翻译 RPC服务的例子
    python logging 模块完整使用示例
    使用内存磁盘加速linux
    About learning on the internet
    [转]伟大的程序员是怎样炼成的
    RabbitMQ手册翻译 Hello World的例子
    事半功倍:你应该知道的HTML5五大特性(转)
  • 原文地址:https://www.cnblogs.com/huay/p/12097969.html
Copyright © 2011-2022 走看看