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

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

作者: 赵荆州 | 来源:发表于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