• 190. 颠倒二进制位


    地址:https://leetcode-cn.com/problems/reverse-bits/

    <?php
    
    /**
    颠倒给定的 32 位无符号整数的二进制位。
    
     
    
    示例 1:
    
    输入: 00000010100101000001111010011100
    输出: 00111001011110000010100101000000
    解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
    因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
    示例 2:
    
    输入:11111111111111111111111111111101
    输出:10111111111111111111111111111111
    解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
         因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-bits
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
     */
    class Solution {
        /**
    
        参考:http://www.hishenyi.com/archives/1356
        1、首先要有2个变量,
        1)临时变量叫做  $xxoo , 初始值是0(十进制),二进制也就是00000000
        2)原始值 变量,叫做$shit , 就是要做处理的 00000101
    
        2、3个步骤
        1) 把$xxoo 左移 一位
        2) 判断 $shit的二进制值最后一位 是不是1,如果是 ,则给$xxoo的十进制值加1 ,这个很重要 看成二进制就是把00000000 变成 00000001
        否则 $xxoo 初始值是00000000, 这个进行移位移个屁啊。。。 都是零
        那么 tmd怎么判断二进制最后一位是不是1?  你要通过截取字符串或正则判断 算你牛逼(不是不可以哦)
    
        答:只要把原值和 1(也就是00000001) 进行 逻辑与操作 (1&1 才是1 ,1&0 或0&1 一律是0)
    
        3) 接下来把$shit 右移 1位  ,如原来是 00000101 ,移动后变成了 00000010
    
        (也就是说$xxoo和shit同时移,一个左一个右,当shit最后一位是1的时候能被我们判断到,于是给$xxoo的末位也置为1,这样就能实现xxoo和shit既同步又相反)
    
        上面的过程反复执行8 次,就能得到10100000
         */
    
        function reverseBits1($n) {
            $xxoo = 0;
            for ($i = 0; $i < 32; $i++) {
                $xxoo = $xxoo << 1;
    
                if (($n & 1) == 1) {
                    $xxoo++;
                }
    
                $n = $n >> 1;
    
            }
        return $xxoo;
        }
    }
    $soluition = new Solution();
    var_dump($soluition->reverseBits(11111111111111111111111111111101));
  • 相关阅读:
    MATLAB调用VISUAL STUDIO 编写的C++函数
    卡尔曼滤波
    资料(不定时更新)
    20201207-总结
    20201126-1 每周例行报告
    20201120-1 每周例行报告
    作业要求 20201112-1 每周例行报告
    20201105-1 每周例行报告
    作业要求 20201029-1 每周例行报告
    作业要求 20201022-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/13044412.html
Copyright © 2020-2023  润新知