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实现特定位取反原理及示例
去华为面试的时候,没有做好准备工作:面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及.笔者是擅长前端的Java Web工程师啊,基本的底层编程知识早已生疏了.机试题碰到了这道位运算的题目,按理说是非常简单的,原理笔者也很清楚,但是由于实在是好多年没有搞过位运算了,Java位运算更是没有操作过,所以结果实在是不体面-- 机试时间规定是一个小时,语言可选C或Java还有个什么脚本语言,笔者花了将近三个小时,才用Java勉强把题做出来了,惭愧惭愧--回来就用JS重新实现了一个简单版
-
Js实现粘贴上传图片的原理及示例
我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析: 复制=>粘贴=>上传 在这个操作过程中,我们需要做的就是:监听粘贴事件=>获取剪贴板里的内容=>发请求上传 需要明白的是: 我们只能上传截图工具截的图片(qq截图.微信截图等),不能粘贴上传系统里的图片(从桌面上.硬盘里复制),因为他们是存在完全不同的地方. 知悉paste event这个事件:当进行粘贴(右键paste
-
15分钟深入了解JS继承分类、原理与用法
本文全面讲述了JS继承分类.原理与用法.分享给大家供大家参考,具体如下: 许多 OO 语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.由于 ECMAScript 中的函数没有签名,所以在 JS 中无法实现接口继承.ECMAScript 只支持实现继承,而且其实现继承主要是依靠原型链来实现的.所以,下面所要说的原型链继承.借用构造函数继承.组合继承.原型式继承.寄生式继承和寄生组合式继承都属于实现继承. 最后的最后,我会解释 ES6 中的 exten
-
Three.js实现雪糕地球的使用示例详解
目录 前言 ThreeJS 基础——实现转动的球体 ThreeJS 纹理——实现转动的地球 交互式雪糕地球 添加 loading 效果 前言 最近的天气有几分酷热,去实验室的道路也有几分漫长,走着走着,小包感觉灵魂已经被热出窍了.回到实验室,把空调打开,雪糕吃上,静坐了几分钟,才重新感觉到灵魂的滋味,葛优躺在实验室的小床上,思维开始天马行空,世上有一万种方式能让小包凉快,但地球母亲呐,她却日渐炎热,谁能来给她降降温? 躺着躺着,进入了梦乡,小包梦到未来有一天,人类超级发达,可以穿梭时空,但发展的
-
深入理解js A*寻路算法原理与具体实现过程
本文实例讲述了js A*寻路算法原理与具体实现过程.分享给大家供大家参考,具体如下: 这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的图片. 当然寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究~~ 简易地图 如图所示简易地图, 其中绿色方
-
js实现浏览器打印功能的示例代码
最近接触到一个新需求,实现打印机打印小票的功能.打的一桌子小票(惭愧),不过也基本满足了业务上的需求,现在分享一下如何实现(好记性不如烂笔头) 先上代码 // 布局代码 <div id="print"> <div id="print_content"></div> </div> //js 部分代码var f = document.getElementById('printf'); if (f) { docume
-
java中Servlet监听器的工作原理及示例详解
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. 监听器原理 监听原理 1.存在事件源 2.提供监听器 3.为事件源注册监听器 4.操作事件源,产生事件对象,将事件对象传递给监听器,并且执行监听器相应监听方法 监听器典型案例:监听window窗口的事件监听器 例如:swing开发首先制造Frame**窗体**,窗体本身也是一个显示空间,对窗体提供监听器,监听窗体方法调用或者属性改变:
-
three.js 将图片马赛克化的示例代码
这篇郭先生来说说BufferGeometry,类型化数组和粒子系统的使用,并且让图片有马赛克效果(同理可以让不清晰的图片清晰化),如图所示 1. 解析图片 解析图片和上一篇一样 initCanvas() { canvas = document.createElement('canvas'); content = canvas.getContext('2d'); canvas.width = 1600; canvas.height = 1200; img = new Image(); img.cr
-
实现vuex原理的示例
效果图如下: 1. 准备好环境 使用 vue/cil 初始化项目配置: npm install -g @vue/cli //全局安装@vue/cli vue create demo-vue //创建项目 yarn add vuex安装vuex创建一个store文件夹并使用: 2. 实现目的 stroe/index.js内容如下:(我们的目的将引入自写的vuex实现vuex基础功能) import Vue from 'vue' import Vuex from 'vuex' // import V
-
基于JS实现动态跟随特效的示例代码
目录 演示 技术栈 源码 css部分 js部分 演示 技术栈 这次用到了关于css的一些功能,和jQuery. CSS3中添加的新属性animation是用来为元素实现动画效果的,但是animation无法单独担当起实现动画的效果.承载动画的另一个属性——@keyframes.使用的时候为了兼容可加上-webkit-.-o-.-ms-.-moz-.-khtml-等前缀以适应不同的浏览器. 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式. 通过 @keyframes 规则,您能够创建动
随机推荐
- 匹配yyyy-mm-dd日期格式的的正则表达式
- Python如何快速实现分布式任务
- javascript实现划词标记划词搜索功能修正版
- 深究AngularJS——ng-checked(回写:带真实案例代码)
- Linux C++ 使用condition实现阻塞队列的方法
- Java多线程之死锁的出现和解决方法
- java 动态代理的方法总结
- Hibernate中实现增删改查的步骤详解
- JS+CSS3制作炫酷的弹窗效果
- PHP设计模式之工厂模式实例总结
- PHP依赖注入(DI)和控制反转(IoC)详解
- PHP判断手机是IOS还是Android
- linux系统使用python获取cpu信息脚本分享
- 基于mssql导mysql遇到的问题
- Smarty使用自定义资源的方法
- JS实现从网页顶部掉下弹出层效果的方法
- js 中 document.createEvent的用法
- PHP goto语句简介和使用实例
- 绝对定位的DIV宽度自动适应的一个方法
- MySQL server has gone away错误提示解决方法