今天看到一个项目使用了BigInteger.setBit与BigInteger.testBit来实现权限控制,觉得很有趣,mark一下

首先,列出一下这两个方法的解释:

1.testBit方法的解释:

boolean java.math.BigInteger.testBit(int n)

Returns true if and only if the designated bit is set. (Computes ((this & (1<<n)) != 0).)

Parameters:
n index of bit to test.
Returns:
true if and only if the designated bit is set.
Throws:
ArithmeticException - n is negative.

意思就是将1左移n位,与this做&运算,其实就是判断当前数(要写成二进制)第n+1位上的数是不是为1,是的话返回true

2.setBit方法的解释

BigInteger java.math.BigInteger.setBit(int n)

Returns a BigInteger whose value is equivalent to this BigInteger with the designated bit set. (Computes (this | (1<<n)).)

Parameters:
n index of bit to set.
Returns:
this | (1<<n)
Throws: ArithmeticException - n is negative. 意思就是将1左移n位,与this对象做|运算,这样的话,就会将this的二进制格式的第n+1位的数变为1.这样很明显就和上一个方法形成一对, n可以作为某个功能编号,而角色可以使用setBit的方法设置编号,然后使用testBit来测试是不是含有n编号的功能。 如果每次有添加多个新的功能,那么就用这些功能编号依次给原来的角色编号执行setBit得到新的角色编号。

使用BigInteger.setBit与BigInteger.testBit来实现权限控制相关推荐

  1. Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用

    1. BigInteger加减乘除法的使用 1 public BigInteger add(BigInteger val):加 2 public BigInteger subtract(BigInte ...

  2. biginteger 原理_Java BigInteger详解

    BigInteger概述 可用于无限大的整数计算 所在的包 java.math.BigInteger; 构造函数 public BigInteger(String val) 成员函数 比较大小函数 p ...

  3. java biginteger string_String到BigInteger java

    我试图从stdin中读取一些真正大的数字,并将它们添加在一起. 但是,要添加到BigInteger,我需要使用BigInteger.valueOf(long);: private BigInteger ...

  4. mysql biginteger java_java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题...

    java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题 Mysql 8.0 原因是mysql升级到8.0,数据库驱动使 ...

  5. BigInteger详解

    在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,理论上能够表示无线大的数,只要计算机内存足够大. 这两个类都在 java.math.* 包中,因此每次必须在 ...

  6. java biginteger位数_JAVA 大数(BigInteger) 归纳总结

    这里主要是归纳了一些他人博客上的对于JAVA大数处理的一些方法. 主要是BigInteger类的应用 转载虽然要注明出处...但是我已经找不到地址了...见谅 Ⅰ基本函数: 1.valueOf(par ...

  7. java中BigInteger用法的详解

    在java中经常会遇到比较大的数,甚至超过了long型,那么该如何处理这些"大数据"呢?在java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类, ...

  8. Java中BigInteger类的使用方法详解,常用最全系列!

    原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性. 我们都知道 Integer 是 Int ...

  9. java biginteger php_BigInteger

    概述 软件包 类 使用 树 已过时 索引 帮助 JavaTM 2 Platform Standard Ed. 6 上一个类 下一个类 框架 无框架 摘要: 嵌套 | 字段 | 构造方法 | 方法 详细 ...

最新文章

  1. linux压缩和解压命令总结
  2. 重装JDK后Tomcat和Eclipse的配置
  3. FastJSON的依赖
  4. html5 窗口变形,HTML5画布(变形)
  5. Sublime Text 3 搭建 React.js 开发环境
  6. java下载json需要的包_jenkins 获取插件,下载插件提速,配置国内镜像
  7. Python_列表生成式
  8. 双非本科逆袭 拿下ACM金牌、字节和旷视offer、保研985!
  9. html可视区高度,你真的懂js获取可视区宽高吗
  10. 计算机odbc数据源管理位置,使用 ODBC 数据源管理器
  11. 多家广告聚合平台的混战:国内移动广告聚合平台大盘点
  12. Python贪吃蛇 (完整代码+详细注释+粘贴即食)
  13. LoadRunner压力测试:详细操作流程
  14. 为什么说美团的天花板是美团自己?
  15. 利用photoshop去掉图片中文字
  16. 21点游戏双人对战(javaweb形式)
  17. jqweui的picker动态加载数据
  18. php小写金额转大写金额
  19. 【美赛优秀论文模板】MCM 2016 A:洗个热水澡
  20. MTP in Android

热门文章

  1. android studio 抽屉,Android Studio 的抽屉导航
  2. 2022年教培行业研究报告
  3. 能用10年的电动车牌子是什么?绿源电动车了解一下吧
  4. 智能交通系统,可以提高通行效率,节约能源,降低空气污染的水平
  5. 再谈模拟器上网!!(Symbian OS S60)(转)
  6. 万年历-java课程设计题_万年历-Java课程设计题(eclipse编辑器)
  7. PDF格式转WORD要钱?Python几秒就能完成。
  8. PHP资源模板——模板终结者
  9. 《勋伯格和声学》读书笔记(五):小调中的七和弦及其转位,没有共同音的和弦的连接
  10. python中matplotlib中文乱码问题一劳永逸的解决。(亲测可行,彻底解决,不用额外附加相关代码)