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

常见位操作:获取,设置,清零相关推荐

  1. CANON佳能I6100故障错误代码和清零方法

    CANON佳能I6100故障错误代码和清零方法 我最近遇到CANON I6100不能打印.故障现象为:黄灯绿灯交替闪四下.开机电机发出吱吱几声就不动.发现清洁单元被墨水粘死不能复位.清洁后故障现象排除 ...

  2. C语言位操作 - bit 、byte的清零,置1,提取,判断

    一.位操作概述 针对MCU的嵌入是开发中经常涉及到寄存器的操作,例如GPIO配置低寄存器GPIOx_CRL(共32个bit),有时需要改变其中的一位或者几位bit值,同时不能影响其它bit位的值. 例 ...

  3. 一体化伺服电机编码器值清零或设置原点如何操作?

    本文仅适用于立迈胜PMM系列一体化伺服电机出现的常见问题.如您的伺服电机是其他型号的请谨慎操作.解决方法如下: 编码器值清零或设置原点如何操作? ①实体端子清零 设置过程: H2003-03=33(设 ...

  4. 惠普服务器开机系统密码,惠普(hp)各型号打印机冷复位,清零,回复出厂设置方法 以及 服务菜单(service menu)密码...

    <惠普(hp)各型号打印机冷复位,清零,回复出厂设置方法 以及 服务菜单(service menu)密码>由会员分享,可在线阅读,更多相关<惠普(hp)各型号打印机冷复位,清零,回复 ...

  5. 常用的位操作:置位、清零与测试

    以下程序可用于把某个位置位.清零或测试某位为0还是1: #include <stdio.h> #include <stdbool.h>int setbit(int num, i ...

  6. 惠普m1216硒鼓清零步骤_惠普HP各型号打印机冷复位清零恢复出厂设置方法

    惠 普 ( H P ) 各 型 号 打 印 机 冷 复 位 , 清 零 , 回 复 出 厂 设 置 方 法 HP 2100 :按住 job cancel 键开机 直到 3 灯全 HP 1320 :关机 ...

  7. 电商网站的积分要不要年末清零?

    咖友提问:电商网站做年底积分清零时要考虑哪些因素? 积分清零到底有没有必要,如果要做,要考虑哪些因素? 来自建君 味库 产品经理的回答 首先,思考一下为什么会有积分体系,了解积分存在的作用和目的.然后 ...

  8. m7405d粉盒清零方法_联想打印机计数器怎么清零?一体机硒鼓怎么清零?看这一篇就够...

    第一种方法: 1.开机--打开前盖--按清除返回键--上箭头 2.按清除返回键--开始键--上箭头11次--屏幕上显示11--OK键--关闭前盖,好了 第二种方法: 1.关掉机器,开机的同时按住功能按 ...

  9. c语言用位运算将一个数清零,C语言学习笔记_位运算

    C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...

最新文章

  1. Linux学习(十四)---大数据定制篇Shell编程
  2. 快速排序及优化(Java实现)
  3. CVPR 2022 接收结果出炉!录用 2067 篇,接收数量上升24%(附最新论文下载)
  4. 浅析Linux awk命令
  5. 安装Oracle11g-client
  6. sobel prewitt算法 模板加权模糊的解释 + 两类边缘下的二阶导数值
  7. lisp如何调用linux头文件,Lisp之 程序的交互执行和非交互执行
  8. 【跃迁之路】【736天】程序员高效学习方法论探索系列(实验阶段493-2019.2.26)...
  9. zabbix---agent安装
  10. 力软框架java_力软敏捷框架 jfGrid 使用例子之一
  11. 【10.16 胡测】Day4 第四波胡策题
  12. 如何把flv格式转成mp4格式?
  13. linux中ps命令输出pid,LINUX使用ps命令获取对应PID
  14. 摩托车一键启动无钥匙进入系统,摩托车PKE无钥匙进入一键启动系统
  15. S905/S905M安装LAKKA教程
  16. VirtualBox中重建Host-Only网卡后无法启动虚拟机(VERR_INTNET_FLT_IF_NOT_FOUND)
  17. 用CSS实现三角形及其原理
  18. 一个北京人的买房血泪史:我不想一辈子做房奴!
  19. iwebshop中mysql_IWebShop/如何安装IWebShop
  20. RK平台调试串口改普通串口,FIQ串口改串口号

热门文章

  1. 网速正常,一打开IE总是卡很久
  2. VBScript的参数引用
  3. 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...
  4. 快餐文化短视频源码行业竞争激烈,短视频发展任重道远
  5. 咕泡-模板方法 template method 设计模式笔记
  6. MySQL 导出数据
  7. 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结
  8. kbmmw 5.0 中的REST 服务
  9. spring --aop(日志记录)在工程中实际使用
  10. css-样式重构-代码分享