js实现特定位取反原理及示例


Posted in Javascript onJune 30, 2014

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

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

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

笔者折腾两个多小时的过程就不再赘述了,这里给出js的实现,很简单的位操作基础知识。原理??乱痪洌?褪前?按比特位左移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位是符号位)。

Javascript 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
jquery cookie的用法总结
Nov 18 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
浅谈javascript实现八大排序
Apr 27 Javascript
详解Bootstrap按钮
Jan 04 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
webpack打包单页面如何引用的js
Jun 07 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
vue路由--网站导航功能详解
Mar 29 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
Nov 25 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 #Javascript
jQuery+ajax实现鼠标单击修改内容的思路
Jun 29 #Javascript
html文本框提示效果的示例代码
Jun 28 #Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 #Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 #Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 #Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 #Javascript
You might like
PHP SQLite类
2009/05/07 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP反射基础知识回顾
2020/09/10 PHP
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
详解Python中的正则表达式的用法
2015/04/09 Python
python计算auc指标实例
2017/07/13 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
Java程序员常见面试题
2015/07/16 面试题
党员教师工作决心书
2014/03/13 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
婚礼秀策划方案
2014/05/19 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
2014年协会工作总结
2014/11/22 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
中秋节晚会开场白
2015/05/29 职场文书
生活委员竞选稿
2015/11/21 职场文书