zoukankan      html  css  js  c++  java
  • ~ 按位取反

    时间能淡忘一切,只要时间够久,即使是曾经最深刻的记忆。

    按位取反,涉及到补码等计算机知识,大学时学过,现在提起原码、反码、补码,依稀有点影响,但具体的已淡忘的不留一丝痕迹。借助网络的力量,再次来记忆一遍。

    在 js 中是通过 ~ 符号进行按位取反操作的。具体的规则如下:

    • 原码:10进制变2进制,8位,并标明符号位。0正数,1负数,最左一位为最高位。
    • 反码:按位取反
    • 补码:除符号位不变,其他位取反
    • 补码修复:最高位为正,末尾 -1 修复;最高位为负,末尾 +1 修复
    • 转换:2进制变10进制

    补充:为什么要有补码及补码修正?因为计算机中减法是通过加一个负数处理的,而负数又是通过补码保存的。目的就是为了统一加法减法。原码:

    举例:

    ~9 结果:-10
    原码:00001001
    反码:11110110
    补码:10001001
    修正:10001010 1是负,加1修正
    转换:-0008020 -> 10

    ~-9 结果:8
    原码:10001001
    反码:01110110
    补码:00001001
    修正:00001000 0是正,减1修正
    转换:+0008000 -> 8

    在 js 中运用:位运算的效率高于符号运算

    let str = 'wwr23';
    if (str.indexOf('2') > -1)) {// 存在 }
    // 优化替换,原理 ~-1 // 0    ~0 // -1   ~1//-2   ~2//-3  只要不为0都为true
    if (~str.indexOf('2'))) {// 存在}
    
  • 相关阅读:
    1204整理
    JDBC(与Orcale的连接)(转)
    Listener监听器详解(转)
    Filter过滤器详解(转)
    第十二章 存货
    会计基础 第一章 总论 部分复习题目
    会计基础 第一章 总论
    星座备考之狮子座如何复习会计从业资格考试
    会计基础第八章内容2
    何以解养老之忧
  • 原文地址:https://www.cnblogs.com/EnSnail/p/10495039.html
Copyright © 2011-2022 走看看