特定位取反(js实现)
2024-08-27 08:12:42
去华为面试的时候。没有做好准备工作。面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及。笔者是擅长前端的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位是符号位)。
最新文章
- Easyui之datagrid实现点击单元格修改单元格背景颜色
- 输入输出流(IO)
- 为什么没有MMU的处理器无法安装操作系统?
- 怎么安装MYSQL5.0的JDBC驱动
- ubuntu快速清理磁盘垃圾
- 更新Code First生成的数据库
- 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface
- POJ1321 棋盘问题(dfs)
- HDU 5723 Abandoned country
- DbContext 和ObjectContext
- jtds驱动更新对一个老问题的解决
- 一次多个数据库tnsping及登录单点登录需求
- linux执行python的脚本文件,提示提示No such file or directory
- 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹
- mybatis异常:Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for。。。。。。
- 这可能是最详细的Python文件操作
- L1-051 打折
- C# HttpClientHelper请求
- Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构
- Spring的AOP简单理解
热门文章
- DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据
- bzoj2333 [SCOI2011]棘手的操作(洛谷3273)
- [luogu] P1772 [ZJOI2006]物流运输(动态规划,最短路)
- vue安装踩坑系列
- 【BZOJ 1452】 [JSOI2009]Count
- 即将到来的Autodesk 主要产品2015版 产品和API新功能在线培训(免费)
- Sql_Server中怎样推断表中某列是否存在
- Linux磁盘分区(一):加入
- mfc 链接 access 2007 数据库
- 安卓实训第四天--基于HttpClient来完毕数据在server和设备间的交互。