二进制妙用之循环计数

1. 什么是循环计数

从0到n之间循环依次取数,假设 n=3,那么我需要的如下数据 0,1,2,3,0,1,2…;现象就这样,我也不知道循环计数这个名词是否合适.姑且,就认为合适吧.

2. 常规实现

这点需求,相信对于所有的coder都小菜一碟.我们愉快的写下如下代码

// author: herbert 464884492
// 公众号: 小院不小
 for(let i=0;i

3. 二进制实现

相信很多朋友,对于这么简单的需求.应该可以一口气实现好多个.姑且就一打吧.当然,我们今天的重点并不是讨论总共有多啊少种实现方式,这里的重点是二进制.好吧,那用二进制改怎么实现呢?

// author: herbert 464884492
// 公众号: 小院不小
let i=0;
while(true){
  console.log(i++&0x3); // ++运算符优先级 17 逻辑与 16
  // do something
  // jump while
}

以上代码中,++先执行,再执行逻辑与.不清楚优先级的朋友,括号最好还是加上. 运算符优先级链接,我这里将其复制过来,所有优先级顺序如下

优先级 运算类型 关联性 运算符 20 圆括号 n/a(不相关) (…) 19 成员访问 从左到右 … . … 19 需要计算的成员访问 从左到右 … [ … ] 19 new(带参数列表) n/a new …( … ) 19 函数调用 从左到右 … ( … ) 19 可选链(Optional chanining) 从左到右 ?. 18 new(无参数列表) 从右到左 new … 17 后置递增 n/a …++ 17 后置递减 n/a …– 16 逻辑非 从右到左 ! … 16 按位非 从右到左 ~ … 16 一元加法 从右到左 + … 16 一元减法 从右到左 – … 16 前置递增 从右到左 ++ … 16 前置递减 从右到左 — … 16 typeof 从右到左 typeof … 16 void 从右到左 void … 16 delete 从右到左 delete … 16 await 从右到左 await … 15 幂 从右到左 … ** … 14 乘法 从左到右 … * … 14 除法 从左到右 … / … 14 取模 从左到右 … % … 13 加法 从左到右 … + … 13 减法 从左到右 … – … 12 按位左移 从左到右 …<

…+=…

…-=…

…*=…

…/=…

…%=…

…<

Original: https://www.cnblogs.com/yfrs/p/bincyc.html
Author: _herbert
Title: 二进制妙用之循环计数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608565/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Tomcat源码分析(二)Bootstrap启动类分析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    082
  • SpringBoot自定义过滤器Filter使用详解

    JavaWeb组件Servlet提供了filter过滤功能,其功能是对目标资源的请求和响应进行拦截,对拦截到的请求和响应做出特殊的功能处理,比如我们请求中有一些敏感信息过滤就是利用…

    Java 2023年5月30日
    091
  • IO in JAVA

    java io 涉及应用程序的网络通信 or 文件读取. 采用了装饰者模式可以为不同的流添加不同的功能. java io提供了 BIO/NIO/AIO的支持java Netty I…

    Java 2023年6月7日
    095
  • java处理集合工具

    public static Map parseListToMap(Collection list, Function mapper) { if (list == null || l…

    Java 2023年6月16日
    095
  • web开发技术-过滤器

    纪录自己的学习过程,帮助记忆 1、简介 过滤器是服务器端的一个组件,可以接收用户端的请求和响应信息,并且对这些信息进行过滤 过滤器不处理结果,只做一些辅助性操作 2、过滤器的工作原…

    Java 2023年6月13日
    097
  • 13、守护线程

    13、守护线程 daemon 1、线程分为守护线程,用户线程 2、虚拟机必须确保用户线程执行完成 3、虚拟机不用等守护线程执行完成 java;gutter:true; packag…

    Java 2023年6月8日
    089
  • java 动态代理

    一:动态代理: 1.JDK动态代理(接口方式) 介绍:使用java反射包中的类和接口实现动态代理的功能,反射包:java.lang.reflect,里面有三个类:Invocatio…

    Java 2023年6月5日
    097
  • 设计模式 19 备忘录模式

    备忘录模式(Memento Pattern)属于 行为型模式 2021 年 10 月 1 日下午,河南驻马店的一名 13 岁女中学生,因和同学发生不愉快喝下半瓶 百草枯。10 月 …

    Java 2023年6月6日
    086
  • Spring ClassPathResource加载资源文件详解

    先看Demo 再看内部源码 获取资源内容 源码解读 该类获取资源的方式有两种:Class获取和ClassLoader获取。 运行结果: /home/temp/spring_test…

    Java 2023年5月30日
    074
  • 正交编码器

    增量式编码器 增量式编码器也称为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲就对应于一个增量位移,编码器眉庄东固定的位移就会产生一个脉冲信号,通过读取单位时间…

    Java 2023年6月5日
    092
  • git学习(一)-fork操作

    fork操作 对于某一个项目来说,如果自己不属于开发者中的一员,那么只能先fork别人的代码,然后将代码拉取到本地进行修改之后,再向原来的项目发起pull request。 for…

    Java 2023年6月7日
    073
  • JAVA学习2——HelloWorld

    Java语言的三大特性: 面向对象:两个要素:类、对象;三个特征:封装、继承、多态 健壮性:去除了c语言中的指针。有自动的垃圾回收机制——但仍然会存在内存溢出、内存泄漏 跨平台性:…

    Java 2023年6月5日
    073
  • NO4 系统移植-项目技术资料共享解决方案

    系统移植项目-技术资料共享解决方案 前言 本文只做解决方案分析,不做具体技术点的说明 一:为什么需要技术资料的共享 系统移植项目的移植点可以分:(1)操作系统移植,例如:由wind…

    Java 2023年6月8日
    0110
  • 怎么样写出可读性强的文章

    1.你的写作听起要自然 大声朗读自己的草稿,听起来不通顺的地方修改直到读起来感到通顺。 2.力求简洁 简介并不是说不可以长篇大论。 如何做到简洁 ① 去除不必要的词,或不重要的引用…

    Java 2023年6月5日
    090
  • 游戏协议安全测试

    测试人员通过第三方工具篡改游戏客户端发送给服务器的协议,达到测试服务器逻辑、挖掘游戏漏洞的一种测试行为,称之为游戏协议安全测试。 协议测试的作用是测试服务器逻辑的漏洞,避免游戏上线…

    Java 2023年6月5日
    0135
  • 自定义线程池的创建与@Async注解使用

    1.创建线程池配置 2.使用 @Async介绍 在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完…

    Java 2023年6月8日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球