java:判断二进制数据中第n位是否为1
可以使用位运算来判断。
&是位的与运算符,是指二进制数按位“与”的操作, 逻辑与就是两者都为真的时候才为真,其他真假,假真,假假的运算结果都是假。二进制写法如下
1 & 1 = 1 , 1 & 0 = 0 , 0 & 1 = 0, 0 & 0 = 0
如果想判断十进制数 d 的二进制第n位是否是1,应该用以下的数m来进行&运算
m = 1 << n-1 (n是大于0的整数)
以上公式
n=1的时候m=1
n=2的时候m=2
n=3的时候m=4
n=4的时候m=8
...
如果同时mask多个位,只需要将m相加即可。
例如第2位和第3位, 将m2+m3 = 2 + 4 = 6
例:获取10的二进制表示中的第2位是否为1:
m= 1 << (2-1) = 2;
10 & 2 二进制是
1010
0010 &
————————
0010
结果不是0, 所以说明第二位是1.
根据boolean设置二进制第n位的值:
- private void setFlag(int mask, boolean b) {
- if (b) {
- flags |= mask;
- } else {
- flags &= ~mask;
- }
- }
拓展学习链接:
java:判断二进制数据中第n位是否为1的更多相关文章
- Java读写二进制数据
import java.io.*; import java.time.LocalDate; public class Test { public static void main(String[] a ...
- Java/Android 二进制数据与String互转
将经过加密的二进制数据保存到本地的方法 byte[] src = new byte[] { 122,-69, -17, 92, -76, 52, -21, -87, -10, 105, 76, -75 ...
- java 判断一个字符串中的数字:是否为数字、是否包含数字、截取数字
题外话: JavaScript中判断一个字符是否为数字,用函数:isDigit(); 一.判断一个字符串是否都为数字 package com.cmc.util; import java.util.re ...
- java 判断Map集合中包含指定的键名,则返回true,否则返回false。
public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple" ...
- java判断A字符串中是否包含B字符
java.lang.String类提供的方法 public boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true. 例如: ...
- java判断字符串String中是否存在中文
public class IsContainChinese { public static boolean isContainChinese (String str){ boolean flag=tr ...
- java判断一个字符串中是否包含全角
public static boolean isAngle(String str){ if(str.getBytes().length==str.length()){ //全是半角 return tr ...
- java判断string数组中是否包含某个元素
- Erlang 位串和二进制数据
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=25876834&id=3300393 因为在本人工作中,服务端Erla ...
随机推荐
- fork函数详解--20
一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同 ...
- XML高速入门
XML是什么 Extensible Markup Language 自己定义标签: 用来数据传输: 可扩展标记语言,是一种类似超文本标记语言的标记语言. 与HTML的比較: 1.不是用来替代HTML的 ...
- hdu 5038 水题 可是题意坑
http://acm.hdu.edu.cn/showproblem.php?pid=5038 就是求个众数 这个范围小 所以一个数组存是否存在的状态即可了 可是这句话真恶心 If not all ...
- java运行显示“找不到或无法加载主类”的解决办法(linux)
要是配置文件的路径问题.打开终端,输入vi ~/.bashrc添加如下代码即可. # set Java environmentJAVA_HOME=/usr/local/java/jdk1.8.0PAT ...
- iOS文件处理介绍(一)
一.在Documents.tmp和Library中存储文件 Documents:用于存储应用程序中经常需要读取或写入的常规文件. tmp:用于存储应用程序运行时生成的文件.(随着应用程序的关闭失去了利 ...
- 【ecshop】如何解决DEPRECATED: PREG_REPLACE()报错
部署的ecshop 在高版本的PHP环境里边 ,访问 单个店铺时候会报错, 访问文件路径: http://www.test.com/supplier.php?suppId=5 类似这样的报错: D ...
- 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界里,有 ...
- linux 程序启动与停止管理脚本
公司接了一个第三方的系统,基于linux写的几个程序,一共有9个部件,第三方没有给脚本,每次启动或停止都得一个一个手工去停止或修改.......,这里稍微鄙视下. 没办法,求人还不如自己动手写, 需求 ...
- Android 性能测试工具- GT
GT(随 身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug&Test Environment).利用GT,仅凭一部手机,无需连 ...
- 国外DNS服务器总结
国外12个免费的DNS DNS(即Domain Name System,域名系统),是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够让用户更方便的访问互联网,而不用去记住能够被机器直接读取 ...