zoukankan      html  css  js  c++  java
  • (十二)golang--进制和位运算

    1.基本进制

    (1)二进制:0,1,满2进1

    • 在golang中,不能直接使用一个二进制表示一个整数,可以用八进制、十进制和十六进制表示

    (2)十进制:0-9,满10进1

    (3)八进制:0-7,满8进1,以数字0开头

    (4)十六进制:0-9及A-F,满16进1,以0x或0X开头,此处A-F不区分大小写,例如0x21AF+1=0x21B0

    package main
    
    import "fmt"
    
    func main() {
        var i int = 5
        fmt.Printf("%b 
    ", i)
    
        //这里^表示几次方
        //转成十进制为:8^1+8^0=9
        var j int = 011
        fmt.Println("j=", j)
    
        //转成十进制:16^1+16^0=17
        var k int = 0x11
        fmt.Println("k=", k)
    
    }

     2.进制之间的转换

    (1)其它进制转十进制

      次方相加

      比如:二进制1011转为十进制:2^3+2^1+2^0=11

         八进制23转为十进制:2*(8^1)+3*(8^0)=16+3=19

    (2)十进制转其他进制

      除法取余

      11转二进制:11除以2,商为5,余数为1;5除以2,商为2,余数为1;2除以2,商为1,余数为0;1除以2,商为0,余数为1,;当商为零时,余数从后往前排列:1011

    (3)二进制转八进制、十六进制

      二进制-->八进制:从右往左,每三位转成八进制;111101的八进制就是75:7=1*2^2+1*2^1+1*2^0,5=1*2^2+1*2^0

      二进制-->十八进制:从右往左,每四位转成十六进制;11111011的十六进制就是FB

    (4)八进制、十六进制转二进制

      八进制-->二进制:依次将每一位转为3位的二进制

      十六进制-->二进制:依次将每一位转成4位的二进制

    3.位运算

    (1)原码、反码、补码

      1)对于有符号而言:

    • 二进制的最高位是符号位:0表示正数,1表示负数
    • 正数的原码、反码、补码都一样
    • 负数的反码=除符号位以外的取反
    • 负数的补码=反码+1
    • 0的反码、补码都是0
    • 在计算机运算的时候,都是以补码的方式进行运算的

    按位&:两位全为1,则为1,否则为0

    按位|:两位中有一个为1,则为1,否则为0

    按位^:两位一个为1,一个为0,结果为1,否则为0

    例如:2的原码、反码和补码都是:0000 0010

         3的原码、反码和补码都是:0000 0011

    则有 2 & 3 = 0000 0010 = 2

       2 |  3 = 0000 0011 = 3 

       2 ^ 3 = 0000 0001 = 1

    再看-2的原码:1 000 0010,其反码为1 111 1101,补码为1 111 1110

    则有-2^2 =1 111 1110 ^ 0 000 0010 = 1 111 1100,我们必须转换成原码才能知道它的值,则有:结果-1再取反

    1 111 1100 - 1 = 1 111 1011 符号位不变再取反 1 000 0100,则-2^2的值是:-4

    1 111 1100 - 1 = 1 111 1011 再取法

    (2)>>和<<

    >>:符号位不变,低位溢出,高位补0,例如补码1100 0011 变成 1010 0001;对于正数而言,相当于值除以2,负数没实际意义;

     <<:符号位不变,低位补0,例如补码1100 0011 变成 100 00110;对于正数而言,相当于值乘以2,负数没实际意义;

  • 相关阅读:
    CODING x 百果园 _ 水果零售龙头迈出 DevOps 体系建设第一步
    Nocalhost 亮相 CD Foundation 国内首届 Meetup,Keith Chan 将出席致辞
    做云原生时代标准化工具,实现高效云上研发工作流
    打造数字化软件工厂 —— 一站式 DevOps 平台全景解读
    WePack —— 助力企业渐进式 DevOps 转型
    CODING Compass —— 打造行云流水般的软件工厂
    Nocalhost —— 让云原生开发回归原始而又简单
    CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全
    Nocalhost:云原生开发新体验
    使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11837608.html
Copyright © 2011-2022 走看看