zoukankan      html  css  js  c++  java
  • go语言-二进制与位运算


    一、进制介绍
    1、二进制:0,1 -->不能直接用二进制来表示一个整数,用%b输出二进制
    package main
    import "fmt"
    func main() {
    var i int =5
       fmt.Printf("%b",i)   //--->>显示5的二进制数
       2、十进制:0-9

    3、八进制:0-7 -->>以数字0开头表示
    package main
    import "fmt"
    func main() {
    var a int = 011
          fmt.Println("a=",a)
    
     4、十六进制:0-9 A-F(字母不区分大小写),以0x开头表示,字母不区分大小写
    package main
    import "fmt"
    func main() {
    var j =0x11
       fmt.Println("j=",j)
    二、进制转换-其他进制转十进制(初始进制数*初始进制数的次方)
    1、二进制转十进制:1011=11,1*2的3次方+0*2的2次方+1*2的1+1*2的0次方
    2、八进制转十进制:0123=83,1*8的2次方+2*8的1次方+3*8的0次方
    3、十六进制转十进制:0x34A=842,3*16的2次方+4*16的1次方+10(A)*16的0次方

    三、进制转换-十进制转其他进制--->>>都是除以要转的进制数,取余数
    1、十进制转二进制转,该数除以2,将余数倒过来,就是二进制 10=1010
    2、十进制转八进制,该数除以8,将余数倒过来,就是八进制 156=0234
    3、十进制转十六进制,该数除以16,将余数倒过来,就是十六进制 356=0X164

    四、进制转换-二进制转其他进制(八进制时三位为一组,十六进制时四位为一组)
    1、二进制转八进制:将二进制分三位为一组,再将每个数*2的次方,1101011=0325
    2、二进制转十六进制:将二进制分四位为一组,再将每个数*2的次方,11010101=0xD5

    五、进制转换-其他进制转二进制--->>>都是除以要转的进制数,取余数
    1、八进制转二进制:将每一位八进制数转成三位的二进制,0237=10011111
    2、十六进制转二进制:将每一位十六进制数转成四位的二进制,0x237=1000110111

    六、位运算:&、|、^、<<、>>,运算需将转成补码运算,若是负数,需将结果从补码转成反码,再转成源码
    1、原码、反码、补码介绍
    2、二进制最高位是符号位,0表示正数,1表示负数 --->>1=0000 00001 -1=1000 0001
    3、正数的原码,反码,补码都是一样
    4、负数的反码=原码符号位数不变,其它取反,补码=反码+1
      1-->>原码:0000 0001-->反码:0000 0001-->补码:0000 0001
      -1-->>原码:1000 0001-->反码:1111 1110-->补码:1111 1111
    5、0的反码,补码都是0
    6、在计算机运算的时候都是采用补码的方式运算
    7、负数:补码转反码是-1,反码转源码是取反

    8、& 按位与:全1为1,否则为0
       -->>2&3=2 2=0000 0010 3=0000 0011,将2和3的二进制补码进行&运算
    9、| 按位或:有1出1,否则为0 -->>2|3=3 2=0000 0010 3=0000 0011,将2和3的二进制补码进行|运算
    10、^ 按位异或:一个为1,一个为0,结果为1,否则为0
       -->>2^3=1 2=0000 0010 3=0000 0011,将2和3的二进制补码进行^运算
       -->>-2^2=-4 2=(原码:1000 0010-->>反码:1111 1101-->>补码:1111 1110 2=0000 0011,将-2和2的二进制补码进行^运算
       -->>运算结果是补码:1111 1100-->>转反码:1111 1011-->>转源码:1000 0100=-4

    11、右位移运算:低位溢出,符号位不变,并用符号位补溢出的高位
    12、左位移运算:符号位数不变,低位补0
  • 相关阅读:
    使用react native制作的一款网络音乐播放器
    swift3.0 简单直播和简单网络音乐播放器
    深入理解iOS开发中的BitCode功能
    react native 之 事件监听 和 回调函数
    swift简单处理调用高清大图导致内存暴涨的情况
    swift3.0 自定义键盘
    iOS原生和React-Native之间的交互2
    react native 之 获取键盘高度
    React Native项目集成iOS原生模块
    架构篇 | 带你轻松玩转 LAMP 网站架构平台(一)
  • 原文地址:https://www.cnblogs.com/puti306/p/11415015.html
Copyright © 2011-2022 走看看