zoukankan      html  css  js  c++  java
  • PHP关于按位取反结果的推导过程

    哎呀几年过去,都快把大学学的计算机导论的知识给忘完了,现在来回顾一下按位去反的流程:

    <?php
    /**
    首先来补充一下基础知识:
    php中有4个位运算,分别是&与 |或 ^异或 ~取反
    & 两位全为1,结果为1
    | 有一位为1,结果为1
    ^ 一个为0,一个为1,结果为1
    ~ 取反0->1,1->0
    
    1.二进制的最高位是符号位,0表示正数,1表示负数。
    2.正数的原码,反码,补码都一样。
    3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)。
    4.负数的补码=它的反码+1。
    5.0的反码,补码都是0.
    6.php没有无符号数,换言之,php中的数都是有符号的。
    7.在计算机运算的时候,都是以补码的方式来运算的,那么运算完后得到的结果也是某个数的补码
     **/
    echo ~8;//-9
    
    那么这个-9是怎么得来的呢?
    
    8的原码、反码、补码都是 :
    
    00000000 00000000 00000000 00001000
    
    取反(即~8)后得到:
    
    11111111 11111111 11111111 11110111  //第一位是符号位,1代表负号,表示这是一个负数;记住运算和运算结果都是用补码表示的,这是某个数的补码,我们还需要推导反码和原码
    
    反码=补码-1,即:
    
    11111111 11111111 11111111 11110110
    
    原码(符号位不变,其他位取反):
    
    10000000 00000000 00000000 00001001
    
    所以结果是:-9
    
    ?>
    

      

  • 相关阅读:
    探讨.net Socket支持在线连接数量
    Net Configuration Agent
    Http压力测试工具HttpTest4Net
    TCP连接有效性检测方法
    SocketAsyncEventArgs使用解说
    可靠、高吞吐架构基础改造
    PerformanceCounter蛋痛的设计
    谱聚类(spectral clustering)原理总结
    用scikit-learn学习DBSCAN聚类
    DBSCAN密度聚类算法
  • 原文地址:https://www.cnblogs.com/huangye-dream/p/4729558.html
Copyright © 2011-2022 走看看