美文网首页
iOS 二进制转换以及位运算

iOS 二进制转换以及位运算

作者: 熊梓君 | 来源:发表于2018-12-11 20:35 被阅读6次

    进制之间的转换

    • 十进制与二进制之间转换
      • 二进制转成十进制
        整数部分从个位开始,依次从2的0次方开始,让每位相加即可转换成功。
    比如:11101
    1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2 ^ 0 
    = 16 + 8 + 4 + 0  + 1
    = 29
    

    小数部分从小数位最左边开始,依次从2的-1次方开始,让每位相加。

    比如:0.001
    0 * 2^-1 + 0 * 2 ^-2 + 1 * 2^-3
    = 0 + 0 + 1/8
    = 0.125
    
    • 十进制转成二进制
      整数部分除以2,然后取出余数,再用商依次往后面除,直到商为0。最后从第一个余数开始代表低位最后一个余数代表高位,即得到对应的二进制数。
    比如:29
    29 / 2 = 商 14 余 1
    14 / 2 = 商 7 余 0
    7 / 2 = 商 3 余 1
    3 / 2 = 商 1 余 1
    1 / 2 = 商 0 余 1
    
    所以: 29 = 11101
    

    小数部分计算方法:用小数部分乘以2,然后取整数部分,依次乘到结果为1时结束,然后取出每次的整数按顺序做为小数部分即可。

    比如:0.125
    0.125 * 2 = 0.25 整数部分:0
    0.25 * 2 = 0.5 整数部分:0
    0.5 * 2 = 1 整数部分:1
    
    所以:0.125 = 0.001
    
    • 八进制、十六进制都按照以上方法计算即可。

    位运算

    • 按位与:&
      如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
    • 按位或:|
      两个相应的二进制位中只要有一个为1,该位的结果值为1
    • 按位异或:^
      若参加运算的两个二进制位值相同则为0,否则为1
    • 取反:~
      ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
    • 左移:<<
      用来将一个数的各二进制位全部左移N位,右补0
    • 右移:>>
      将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0

    相关文章

      网友评论

          本文标题:iOS 二进制转换以及位运算

          本文链接:https://www.haomeiwen.com/subject/tngehqtx.html