zoukankan      html  css  js  c++  java
  • 特定位取反(js实现)

            去华为面试的时候。没有做好准备工作。面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及。笔者是擅长前端的Java Webproject师啊,主要的底层编程知识早已生疏了。机试题碰到了这道位运算的题目,按理说是非常easy的,原理笔者也非常清楚。可是因为实在是好多年没有搞过位运算了,Java位运算更是没有操作过。所以结果实在是不体面……

            机试时间规定是一个小时。语言可选C或Java还有个什么脚本语言,笔者花了将近三个小时。才用Java勉强把题做出来了。羞愧羞愧……回来就用JS又一次实现了一个简单版本号。今天整理贴出来。

            题目是:循环输入每组两个数hex和n(0<=n<31),hex是一个16进制的数字,我们要做的是将hex的第n位取反。然后以16进制的形式输出相应的结果。

            笔者折腾两个多小时的过程就不再赘述了,这里给出js的实现。非常easy的位操作基础知识。原理啰嗦一句。就是把1按比特位左移n位,然后跟原数异或即可了:

    function bitOper(hex, n){
        var num = parseInt(hex); 
        num ^= (1<<n);
        return num.toString(16);
    }
    console.log(bitOper(0x1234, 3));    //123c
            因为js整数类型仅仅有32位的限制,上述演示样例代码仅支持n<31的简单情况(第31位是符号位)。





  • 相关阅读:
    错误libvirtError: invalid argument: could not find capabilities for domaintype=kvm
    容器部署ES 和 ES head插件
    squid配置yum源代理服务器
    coredns 1.2.2 反复重启问题
    ansible debugger 模块
    入门篇-contrail-command(对接openstack)All-In-One
    目标文件是什么鬼?
    汇编指令集
    切换GCC编译器版本
    kubernetes-dashboard登录出现forbidden 403
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7114839.html
Copyright © 2011-2022 走看看