zoukankan      html  css  js  c++  java
  • javascript中按位操作的应用,如何快速取整 判断字符串是否是包含某字符串

    最近在看最基础的《javascript高级程序设计》看的灰常慢,看到按位运算这里,突然反思,这种鬼操作到底有什么实际的应用呢?

    按位运算符有6个

    & 按位与:a & b

    |按位或:a | b

    ^按位异或:a^b

    ~按位取非:~a

    >>右移: a>>2

    <<左移:a<<2

    >>> 无符号右移:a >>> b

    实际应用

    求负数减1 反转操作

    console.log(~true)  //-2
    console.log(~false) // -1
    

    快速判断字符串中首付含有某个字符

    if (~'mayufo'.indexOf('may')) {
        console.log(true);
    }
    

    如果是-1 ~(-1) = 0

    快速取整

    console.log(~~30.79); //30
    

    按位异或快速取整

    console.log(30.79 | 0); //30
    

    判断奇偶

    console.log((32 | 0) & 1); //0为偶数,1为奇数
    

    交换变量

    var a = 1,
        b = 2;
    
    console.log(a, b);
    
    a ^= b;
    
    b ^= a;
    
    a ^= b;
    console.log(a, b);
    

    快速进行幂计算

    var c = 3; d = 2.45;e=16;
    
    console.log(c<<3);//16   等于3*(2的3次方)
    console.log(d>>0);//2(向右移0位,小数部分丢失,取整)
    console.log(e>>3);//2     等于16/(2的3次方)
    

    优化乘法和除法性能

    加减计算只需要1个时钟周期

    乘法需要10个时钟周期

    除法需要30个时钟周期

    所以乘法和除法在运行的速度上弱于加法减法。

    但我们可以用位运算来对乘法和除法进行降维运算

    参考

    https://www.zhihu.com/question/21592697

  • 相关阅读:
    安装solr
    Linux下安装mysql
    SQL JOIN
    SQL之TCL
    SQL之DCL
    SQL之DML
    SQL之DDL
    Mysql 常用查询语句
    Java-Poi 读取excel 数据
    工作中的第一份LoadRunner脚本
  • 原文地址:https://www.cnblogs.com/mayufo/p/7098066.html
Copyright © 2011-2022 走看看