zoukankan      html  css  js  c++  java
  • 用位运算替代js中的常见操作

    一、补码

    所谓补码就是所有位取反;

    例如3的二进制表示是:00000011,那么3的补码就是11111100;

    对于-3的二进制表示就是3的补码+1:11111101;

    所以二进制的负数就是该数的补码加1。

    随便来一个二进制数来算算它是多少:11111010

    首位是1,那么他是个负数,负几呢?数值->补码->+1=负数;

    那么这个数就是减一再补码:11111010-1=11111001,再补码,00000110=>6,所以之前的负数就是-6

    二、按位非(~)

    按位非就是补码的运算过程,数值->补码->+1=负数

    所以,一个数的补码就是他的负数-1;

    -1的补码:1-1 = 0;

    0的补码:0-1 = -1;

    1的补码:-1-1 = -2;

    所以因为js中没有提供contains方法,所以我们通常是用indexOf是否为-1来判断存不存在;

    由于-1的补码和其他(0+)的补码有区别,为0,0在js中就是false;

    所以我们直接对indexOf进行按位非运算,如果不存在,那么返回-1,-1的按位非是0,那么就是false;

    所以不存在的话,按位非运算就是false;

    两层按位非取整

    三、

  • 相关阅读:
    准确率99.9%的离线IP地址定位库
    手写一个消息队列以及延迟消息队列
    rabbitmq介绍
    污点和亲和力高级调度方式
    ceph
    Vue作业
    label和labelSeletor
    http状态简记
    数据库
    作业
  • 原文地址:https://www.cnblogs.com/eco-just/p/10459195.html
Copyright © 2011-2022 走看看