首页 > 其他分享 >基本位操作

基本位操作

时间:2022-12-13 16:35:15浏览次数:37  
标签:基本 位操作 1s 0s int mask num 位到


位操作:
(一)常见位操作:&(与 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);
}
---------

标签:基本,位操作,1s,0s,int,mask,num,位到
From: https://blog.51cto.com/u_15911260/5934626

相关文章

  • Git基本概念
    集中式版本控制系统:CVS+SVN先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活......
  • SQL基本用法总括一
    整理一份SQL基本用法,包含:①表:创建,查询,修改,重命名      ②删除:字段,表,数据,主键,自增长      ③新增:字段,表      ④更新,排序,分组    ......
  • 第一百一十二篇: JS数组Array(一)数组基本用法
    好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。跟其他语言中的数组一样,ECMAScript数组也是一组有序的......
  • Selenium12--元素基本操作
    文本框和文本域点击:click()清空:clear()输入:send_keys("数据")保留原内容,追加输入文本域输入换行时使用转义字符\n来表示获得属性值get_attribut......
  • Selenium11--浏览器基本操作
    浏览器基本操作SeleniumWebDriver提供各种有用的方法来控制浏览器常见的浏览器基本操作分类:浏览器导航操作调整浏览器窗口大小操作获取窗口里网页信息浏览器......
  • K8s基本组件介绍
    1.1 Master节点:整个集群的控制中枢Kube-APIServer:集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资源配置、整个集群安全机制的入......
  • JS中URLSearchParams的基本用法
    本章将和大家分享JS中URLSearchParams的基本用法。话不多说,下面我们直接来看代码。一、JS中URLSearchParams的基本用法<!DOCTYPEhtml><htmllang="en"><head><......
  • java学习笔记--java介绍,一些基本知识,面向对象的理解
    <1>Java介绍1)Java的特点简单易学    是c和c++的变种,而且摒弃了其中容易引起程序错误的地方,比如结构体,内存回收等。提供了丰富的类库。完全面向对象。安全性高......
  • 指针基本介绍
    普通的变量在声明的时会给出数据类型和变量名,比如,inta表示整型的变量a要想声明一个指针变量,使它指向另外一个变量,要把一个*(星号)放在变量的前面,比如,int*p,现在是......
  • 函数基本概述
    1.函数基本概述01.什么是函数?​函数其实就是一堆命令的合集,用来完成特定功能的代码块,你可以对它进行自定义命令,并且可以在脚本中任意位置使用这个函数,要使用定义的函......