特定位取反(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

时间: 2024-08-15 09:48:19

特定位取反(js实现)的相关文章

利用JS跨域做一个简单的页面访问统计系统

其实在大部分互联网web产品中,我们通常会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便可以在这些统计系统中看到自己网站页面具体的访问情况.但是有些时候,由于一些特殊情况,我们需要自己来设计统计系统.由于前段时间公司的业务需求,我也是自己尝试了下,本文提供的是一个基本思路,统计系统也比较简单. 几个基本统计需求: 1.统计web每个页面用户访问量 2.统计用户访问者的和IP地址信息 3.页面之间的跳转情况 4.访问高峰时间段 服务器结构: 数据库表设计: 以上只是我简单列

Js学习第三天----字符集

字符集 JS程序是用Unicode字符集编写的.Unicode是ASCII和Latin-l的超集,并持之地球上几乎所有再用的语言.ECMAScript 3要求JS的实现必须支持Unicode2.1以及后续版本,ECMAScript5则要求支持Uniocde 3及以后版本. 区分大小写 JS是区分大小写的语言.也就是说,关键字,变量,函数名和所有的标识符都必须采取一致的大小写形式.比如,关键字"while"必须写成"while",而不能写成"WHILE&qu

Cakephp中使用JavaScriptHelper来引入js文件

页面的head部分的内容在Cakephp中主要是有htmlhelper来进行控制的,而js部分则是由JavaScripthelper来进行控制的,在controller里面设置好:var $helpers = array(’Html’,'Javascript’);就可以在ctp文件中使用JavaScripthelper对象:$javascript了.具体见正文. 前提是js文件都放在了 webroot/js  目录下面了,下面是范例. 1.$javascript->link($JsName,0)

JS与Object-C交互补充

有一个场景,用户点击Web页面,产生JS交互时,如何根据JS事件,App做出响应. 我们可以自己做一个简单的js交互,实现基于的原理是: 1. object-c利用stringByEvaluatingJavaScriptFromString:(NSString *)script消息获取uiwebview页面数据. 2. 那么如何监控特定的js事件呢?UIWebViewDelegate的(BOOL)webView:shouldStartLoadWithRequest:navigationType:

如何使用JW Player来播放Flash并隐藏控制按钮和自定义播放完成后执行的JS

在一个客户项目中播放的flash需要进行定制如不显示控制按钮,flash播放完成后执行特定的js等,在用过了N多的JQery插件和播放器后最终JW Player插件可以满足我的以上要求 因为JW Player插件是同事发给我(版本:jwplayer6.6不是最新版本),在将控制按钮隐藏时,根据官网上的参数设置后尽然无效 最终经过摸索才找到原因是官网上的最新版本为6.10版本,而我用的是6.6版本所以不管我怎么配置都是无效的(部分参数在旧版本不支持) 找到原因就那就简单了,在官网上下载最新的播放器

《JS权威指南学习总结--第二章词法结构》

第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的数据量,比如: 数字.小数.字符串文本.布尔值.正则表达式直接量 三.标识符和保留字 标识符作用:标识符就是一个名字,在JS中,标识符用来对变量和函数进行命名,或者用做JS代码中某些循环语句中的跳转位置的标记. 标识符命名规则: 1.必须以字母.下划线(_)或美元符($)开始. 2.后续的字符可以是

利用JS跨域做一个简单的页面訪问统计系统

事实上在大部分互联网web产品中,我们一般会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便能够在这些统计系统中看到自己站点页面详细的訪问情况.可是有些时候,因为一些特殊情况,我们须要自己来设计统计系统.因为前段时间公司的业务需求,我也是自己尝试了下,本文提供的是一个基本思路,统计系统也比較简单. 几个基本统计需求: 1.统计web每一个页面用户訪问量 2.统计用户訪问者的和IP地址信息 3.页面之间的跳转情况 4.訪问高峰时间段 server结构: 数据库表设计: 以上仅

解决生产环境js无法调试问题

demo:https://github.com/chenchunyong/source-map-demo.git 背景 前端开发中,开发环境与生产环境的代码往往不一致,生产环境的代码通过构建工具进行合并,混淆,压缩等操作.不过通过构建工具生成的js代码可读性差,不利于维护.排查问题. 解决方案 首先,通过构建工具生成两个生产js文件,如下: 所有用户可见js,比如bundle.js 特定用户js,排查问题用,此js文件会加入sourcemap引用,比如说bundle.debug.js 然后,根据

锋利的jQuery读书笔记 第6章、第9章 第10章

第六章 Ajax 全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网页应用相关的技术所形成的结合体.使用 Ajax,我们可以无刷新状态更新页面,并且实现异步提交,提升了用户体验. 一.Ajax的优势和不足 (1)优势主要以下几点: 1.不需要插件支持(一般浏览器且默认开启 JavaScript 即可) 2.用户体验极佳(不刷新页面即可获取可更新的数据) 3.