去华为面试的时候。没有做好准备工作。面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及。笔者是擅长前端的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位是符号位)。

最新文章

  1. Easyui之datagrid实现点击单元格修改单元格背景颜色
  2. 输入输出流(IO)
  3. 为什么没有MMU的处理器无法安装操作系统?
  4. 怎么安装MYSQL5.0的JDBC驱动
  5. ubuntu快速清理磁盘垃圾
  6. 更新Code First生成的数据库
  7. 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface
  8. POJ1321 棋盘问题(dfs)
  9. HDU 5723 Abandoned country
  10. DbContext 和ObjectContext
  11. jtds驱动更新对一个老问题的解决
  12. 一次多个数据库tnsping及登录单点登录需求
  13. linux执行python的脚本文件,提示提示No such file or directory
  14. 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹
  15. mybatis异常:Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for。。。。。。
  16. 这可能是最详细的Python文件操作
  17. L1-051 打折
  18. C# HttpClientHelper请求
  19. Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构
  20. Spring的AOP简单理解

热门文章

  1. DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据
  2. bzoj2333 [SCOI2011]棘手的操作(洛谷3273)
  3. [luogu] P1772 [ZJOI2006]物流运输(动态规划,最短路)
  4. vue安装踩坑系列
  5. 【BZOJ 1452】 [JSOI2009]Count
  6. 即将到来的Autodesk 主要产品2015版 产品和API新功能在线培训(免费)
  7. Sql_Server中怎样推断表中某列是否存在
  8. Linux磁盘分区(一):加入
  9. mfc 链接 access 2007 数据库
  10. 安卓实训第四天--基于HttpClient来完毕数据在server和设备间的交互。