位操作:
(一)常见位操作:&(与 and),|(或,or),^(异或,xor)
如:
"1s"和"0s"分别表示一串1和一串0;
如:x^0s=x;
x&0s=0s x|0s=x
x^1s=~x; x&1s=x x|1s=1s
x^x=0 x&x=x x|x=x
注意:(1)位操作中所有的操作都是按位进行的,某一位的运算结果不会影响到其他位。
(2)上诉语句对某一位成立,同样适用于一串位。
-----------------
(二)&(与 and):
(1)相应位置0。
哪些位要置0,则找一个对应位为0的数,与之相与。
如:x & (~0<<n):将x的最右的n为置0.
1)步骤:
将1左移i位,得到形如00010000的值,然后对该值取反得到掩码。
掩码然后和num位与。
2)实现:
/*将num的第i为清0*/
int clearBit(int num ,int i){
int mask=~(1<<i);
return (num & mask);
}
/*
目的:将num的最高位到第i位清零。
分析:将最高位到第i位清零,只需要一个0到i-1位为1,其余位为0的数,(形如00011111)与之相与。
*/
int clearBitsMSBtoI(int num ,int i){
int mask=(1<<i)-1;
return (num & mask);
}
/*
目的:将num的0位到第i位清零。
分析:只需要将0位到第i为0,其余位为1的数,(形如11111000)与之相与即可。
*/
int clearBitsIto0(int num ,int i){
int mask=~(1<<(i+1)-1);
return (num & mask);
}
或者
int clearBitsIto0(int num ,int i){
return num& (~0 << i);
}
---
(2)获取第i位:getBit
1)步骤:
将1左移i位,然后和num位与。
2)实现:
/*取num的第i位*/
boolean getBit(int num ,int i){
return (num & (1<<i)!=0);
}
如:获取第5位,如将1左移5位,得到形如00010000,然后和num位与。
-----------------
(三)|(或,or):
(1)作用:
相应位置1。setBit
1)步骤:
先将1左移i位,得到形如00010000的值,然后该值与num执行位或。
2)实现:
/*将num的第i位置1*/
int setBit(int num ,int i ){
return (num | (1<<i) );
}
-----------------
(四)^(异或,xor):
(1)作用:
相应为取反。
(2)实现:
/*将第i位取反*/
int reverseBit(int num ,int i){
int mask=(1<<i);
return (num ^ mask);
}
---------
基本位操作
原创
©著作权归作者所有:来自51CTO博客作者legend05070911的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Linux性能指标-1概括
下一篇:random随机数性能问题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】详细解读串的基本概念与基本操作
【数据结构】第四章——串详细介绍串的基本概念和基本操作……
数据结构 C语言 字符串 ASCII码值 转义字符 -
【操作系统】详细介绍操作系统的基本概念
【操作系统】第一章——计算机系统概述详细介绍操作系统的基本概念
操作系统 命令接口 程序接口 GUI 计算机系统 -
python 操作 openldap 基本操作
ldap3 python openldap
ldap3 python openlda -
Hbase基本操作
1.1 连接HBase使用hbase shell命令来连接正在运行的Hbase实例,该命令位于HBase安装包下
hbase 数据 删除表 数据管理 -
hive数仓hdfs到ods
声明: 1. 本文针对的是一个知识的梳理,自行整理以及方便记忆 2. 若有错误不当之处, 请指出一、hive的定义与理解首先,hive是一个构建于hadoop集群之上的数据仓库应用。那么,得先
hive数仓hdfs到ods 数据仓库 hive hadoop Hive