常见位操作:获取,设置,清零
1 /*常见位操作:获取,设置,清零 2 * 3 * */ 4 public class BitGet { 5 /* 6 * 该函数实现获取功能 7 * 先将1左移动i位,左移动0位变成了00000001, 8 * 然后再和Num十进制12转化为二进制00001100进行&运算, 9 * 00000001 如果是左移动两位就为 00000100 10 * 00001100 00001100 11 * -------- -------- 12 * 00000000 00000100 13 * 从而将第i位除外的所有位清零,最后,检查该结果是不是为零 14 * 不为零则说明第i位为1,否则就是零 15 * */ 16 public boolean getBit(int num,int i) 17 { 18 return ((num&(1<<i))!=0); 19 } 20 /*该函数实现置位功能 21 * 先将1左移动i位,得到形如00001000的值,接着,对这个值和Num进行位或运算 22 * 这样只会改变第i位的值,不会影响Num其他位 23 * 如下 24 * 12的二进制码为00001100 25 * 如果把第1个位进行置位得到 26 * 00001100 27 * 00000010 28 * -------- 29 * 00001110 30 * 就是把第二位置为1,其他的都不变 31 * */ 32 public int setBit(int num,int i) 33 { 34 return num|(1<<i); 35 } 36 /* 37 * 该函数实现清零功能 38 * 该方法与setBit刚好相反,首先,将1向左移动i位,然后对这个值取反得到其掩码 39 * 接着,对该掩码和Num执行位与运算,这样只会清零num的i位,其余位则保持不变 40 * 如下 41 * 12的二进制为00001100 42 * 假设要清零第3位 则有 43 * 1.将1向左移动3位得 00001000 44 * 2.取反 得11110111 45 * 3.进行位与运算 46 * 11110111 47 * 00001100 48 * -------- 49 * 00000100 50 * 可以得出只是对第三位清零,其他保持不变 51 * */ 52 public int clearBit(int num,int i) 53 { 54 int mask=~(1<<i); 55 return num &mask; 56 } 57 public static void main(String[] args) { 58 // TODO Auto-generated method stub 59 BitGet bg = new BitGet(); 60 boolean flag=bg.getBit(12, 3); 61 System.out.println(flag); 62 int value = bg.setBit(12, 1); 63 System.out.println("置位第1位为:"+value); 64 value=bg.clearBit(12, 3); 65 System.out.println("清零第3位为:"+value); 66 67 } 68 69 }
转载于:https://www.cnblogs.com/luoweiKnowledge/p/3960715.html
常见位操作:获取,设置,清零相关推荐
- CANON佳能I6100故障错误代码和清零方法
CANON佳能I6100故障错误代码和清零方法 我最近遇到CANON I6100不能打印.故障现象为:黄灯绿灯交替闪四下.开机电机发出吱吱几声就不动.发现清洁单元被墨水粘死不能复位.清洁后故障现象排除 ...
- C语言位操作 - bit 、byte的清零,置1,提取,判断
一.位操作概述 针对MCU的嵌入是开发中经常涉及到寄存器的操作,例如GPIO配置低寄存器GPIOx_CRL(共32个bit),有时需要改变其中的一位或者几位bit值,同时不能影响其它bit位的值. 例 ...
- 一体化伺服电机编码器值清零或设置原点如何操作?
本文仅适用于立迈胜PMM系列一体化伺服电机出现的常见问题.如您的伺服电机是其他型号的请谨慎操作.解决方法如下: 编码器值清零或设置原点如何操作? ①实体端子清零 设置过程: H2003-03=33(设 ...
- 惠普服务器开机系统密码,惠普(hp)各型号打印机冷复位,清零,回复出厂设置方法 以及 服务菜单(service menu)密码...
<惠普(hp)各型号打印机冷复位,清零,回复出厂设置方法 以及 服务菜单(service menu)密码>由会员分享,可在线阅读,更多相关<惠普(hp)各型号打印机冷复位,清零,回复 ...
- 常用的位操作:置位、清零与测试
以下程序可用于把某个位置位.清零或测试某位为0还是1: #include <stdio.h> #include <stdbool.h>int setbit(int num, i ...
- 惠普m1216硒鼓清零步骤_惠普HP各型号打印机冷复位清零恢复出厂设置方法
惠 普 ( H P ) 各 型 号 打 印 机 冷 复 位 , 清 零 , 回 复 出 厂 设 置 方 法 HP 2100 :按住 job cancel 键开机 直到 3 灯全 HP 1320 :关机 ...
- 电商网站的积分要不要年末清零?
咖友提问:电商网站做年底积分清零时要考虑哪些因素? 积分清零到底有没有必要,如果要做,要考虑哪些因素? 来自建君 味库 产品经理的回答 首先,思考一下为什么会有积分体系,了解积分存在的作用和目的.然后 ...
- m7405d粉盒清零方法_联想打印机计数器怎么清零?一体机硒鼓怎么清零?看这一篇就够...
第一种方法: 1.开机--打开前盖--按清除返回键--上箭头 2.按清除返回键--开始键--上箭头11次--屏幕上显示11--OK键--关闭前盖,好了 第二种方法: 1.关掉机器,开机的同时按住功能按 ...
- c语言用位运算将一个数清零,C语言学习笔记_位运算
C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...
最新文章
- Linux学习(十四)---大数据定制篇Shell编程
- 快速排序及优化(Java实现)
- CVPR 2022 接收结果出炉!录用 2067 篇,接收数量上升24%(附最新论文下载)
- 浅析Linux awk命令
- 安装Oracle11g-client
- sobel prewitt算法 模板加权模糊的解释 + 两类边缘下的二阶导数值
- lisp如何调用linux头文件,Lisp之 程序的交互执行和非交互执行
- 【跃迁之路】【736天】程序员高效学习方法论探索系列(实验阶段493-2019.2.26)...
- zabbix---agent安装
- 力软框架java_力软敏捷框架 jfGrid 使用例子之一
- 【10.16 胡测】Day4 第四波胡策题
- 如何把flv格式转成mp4格式?
- linux中ps命令输出pid,LINUX使用ps命令获取对应PID
- 摩托车一键启动无钥匙进入系统,摩托车PKE无钥匙进入一键启动系统
- S905/S905M安装LAKKA教程
- VirtualBox中重建Host-Only网卡后无法启动虚拟机(VERR_INTNET_FLT_IF_NOT_FOUND)
- 用CSS实现三角形及其原理
- 一个北京人的买房血泪史:我不想一辈子做房奴!
- iwebshop中mysql_IWebShop/如何安装IWebShop
- RK平台调试串口改普通串口,FIQ串口改串口号
热门文章
- 网速正常,一打开IE总是卡很久
- VBScript的参数引用
- 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...
- 快餐文化短视频源码行业竞争激烈,短视频发展任重道远
- 咕泡-模板方法 template method 设计模式笔记
- MySQL 导出数据
- 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结
- kbmmw 5.0 中的REST 服务
- spring --aop(日志记录)在工程中实际使用
- css-样式重构-代码分享