码迷,mamicode.com
首页 > Web开发 > 详细

特定位取反(js实现)

时间:2014-06-30 17:07:44      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:基本算法   位运算   华为   面试   js   

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

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

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

        笔者折腾两个多小时的过程就不再赘述了,这里给出js的实现,很简单的位操作基础知识。原理啰嗦一句,就是把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位是符号位)。



特定位取反(js实现),布布扣,bubuko.com

特定位取反(js实现)

标签:基本算法   位运算   华为   面试   js   

原文地址:http://blog.csdn.net/neareast/article/details/23567335

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!