美文网首页
编程小技巧,提高代码性能

编程小技巧,提高代码性能

作者: 赵荆州 | 来源:发表于2018-11-21 16:55 被阅读7次
    1. 位移(<<、>>、>>>》)操作
      先来看看常见数的二进制表达(用8位数表达):
    十进制 二进制
    1 0000 0001
    2 0000 0010
    3 0000 0011
    4 0000 0100
    5 0000 0101
    6 0000 0110
    7 0000 0111
    8 0000 1000

    PS:通常负数的二进制以补码(在原码的基础上,1转0,0转1,符号位不变)的方式存储
    PS:二进制通常高位为符号码,0正,1负

    常见用法:

    • 求2的3次方
      观察上面表格中二进制数的规律,可以得出,如果用移位运算,只需左移两位即可,2<<2
      记忆方法:求2的n次方,只需要左移2的n-1位即可。
      验证:求2的2次方:2次方,只需左移1位即可,2<<1,得出0000 0100 ,对照表格可得知为4.
    • 求数组下标的中间位置
      例如快速排序通常需要获得数组(长度为8)的中间下标
      普通方法:长度8/2=4
      移位方法:通过观察上面表格中的二进制数规律,可以得出,如果通过移位只需右移一位即可,8>>1
      PS:>>>和>>区别,当移位的数是负数的时候,>>将二进制高位用1补上,而>>>将二进制高位用0补上,这就导致了>>>将负数的移位操作结果变成了正数(因为高位用0补上了)
    1. 与或异(&|^)操作
      与(&),都为1时得1,否则为0
      常见用法:
    • 清零
      清零指定位(4位):0110011011 & 1111110000 = 0110010000。
      实际应用:子网掩码,打开你的ip配置,一般常见子网掩码都设置为255.255.255.0,转换为二进制为11111111.11111111.11111111.0000000,如果你的ip是192.168.1.125,将取得网关为192.168.1。
    • 区分奇偶
      x & 1 ,如果结果为0则为偶数,为1则为奇数。例如3 & 1,转换为二进制进行与运算为: 0000 0011 & 0000 0001 最后结果为0000 0001即1。为奇数。在例如 2 & 1,转换为二进制进行与运算为: 0000 0010 & 0000 0001 最后结果为0000 0000即0。为偶数。
    • 取指定位

    相关文章

      网友评论

          本文标题:编程小技巧,提高代码性能

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