常见位操作:获取,设置,清零

 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 }
时间: 2024-10-13 16:22:49

常见位操作:获取,设置,清零的相关文章

mysql设置自增id清零 auto_increment

清空表数据之后,如何让自增id清零,即从0开始计数呢 ALTER TABLE TABLE_NAME AUTO_INCREMENT = 0; 想让id从1开始,就让 AUTO_INCREMENT = 1 就行了.

各种投影灯泡的清零方法!

刚开学,学校的多媒体坏了很多,除了新安装的12套,其余的基本都 有问题. 连续2个星期,基本都 在维修多媒体中,很忙,很累. 好在是,新招入的小徐同学,还 是很给力的,够勤快,脑子也很灵光,是个好苗子. 这两天,接连遇到几次要给投影机清零 的问题. 于是收集整理了一下各种投影机清零的方法. ******************************** sharp DLP投影机的清零 待机状态时同时按"right"+"down"+"enter"

转载:2410中断中SRCPND和INTPND清零的疑问

2410中断中SRCPND和INTPND清零的疑问SRCPND是中断源引脚寄存器,某个位被置1表示相应的中断被触发,但我们知道在同一时刻内系统可以触发若干个中断,只要中断被触发了,SRCPND的相应位便被置1,也就是说SRCPND在同一时刻可以有若干位同时被置1,然而INTPND则不同,他在某一时刻只能有1个位被置1,INTPND 某个位被置1(该位对应的中断在所有已触发的中断里具有最高优先级且该中断没有被屏蔽),则表示CPU即将或已经在对该位相应的中断进行处理,于是我们可以有一个总结:SRCP

Keil MDK下如何设置非零初始化变量(转)

源:Keil MDK下如何设置非零初始化变量 一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零.如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的. 在给出方法之前,先来了解一下代码和数据的存放规则.属性,以及复位后为何默认非初始化变量所在RAM都被初始化为零了呢. 什么是初始化数据变量,什么又是非初始化数据变量?(因为我

部分激光打印机清零方法

部分打印机加粉后清零操作原因:厂商为了控制用户的耗材利用率,在机器内部增加了计数程序或增加了计数芯片 兄弟7360打印机加粉清零方法 碳粉清零: 1.打开前盖 2.按清除键,显示跟换硒鼓,不理它 3.再按启用键,然后按00 ,过几秒就可以关前盖,就可以了. 硒鼓清零: 1.打开前盖 2.按清除键,显示跟换硒鼓: 1是2否 3.按1 ,过几秒就可以关前盖,就可以了. 兄弟2140硒鼓清零方法: 在开机情况下打开前盖,按住GO键不放(此时应前盖已经打开,必须按住机器内部的白色按钮,如下图圆圈所示位置

两个常见位操作面试题 不用加减乘除运算符计算两数之和及a b 3

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net <两个常见位操作面试题不用加减乘除运算符计算两数之和及a=b*3> 地址:http://blog.csdn.net/morewindows/article/details/8710737转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/MoreWindows 上一篇<位操作基础篇之位操作全面总结>

BSS段清零的原因

BSS段清零的原因是因为这个段是BSS 要说为什么要有BSS的话,历史就比较久远了. BSS段我所知道的起源是Unix最初的时候(当然,不排除可能有更早的情况).变量分两种:局部变量.全局变量. 根据C语法的规定,局部变量不设置初始值的时候,其初始值是不确定的,局部变量(不含静态局部变量)的存储位置位于栈上,具体位置不固定. 全局变量(和静态局部变量)有专门数据段存储,初始值是0,具体位置是固定的. 其实说到底,就两种,一种是位置固定(数据段里),一种是位置不固定的(栈上). 要知道,早期的计算

专家表示武汉有望3月底新增病例“清零”,但多地出现出院“复阳”该如何破?

#永洪科技今日疫情播报#截至3月6日9:30,我国累计确诊80710例,现有确诊23872例,现有疑似482例,累计治愈53793例 ,累计死亡3045例.新增境外输入确诊病例16例(甘肃11例,北京4例,上海1例),累计报告境外输入确诊病例36例. 中央指导组专家组成员.中国工程院院士.天津中医药大学校长张伯礼,近日在接受媒体专访时表示:武汉市有希望到3月底实现新增病例基本"清零". 这无疑是大家期待的好消息,但2月以来,我国多地出现患者出院后复检核酸阳性的情况,"复阳&q

(网管工作日志)Canon 清零

公司打印机canon ip 1980最近一直在报错:废墨盒已满,本来想找到这个废墨盒清理一下,可找了半天还是不确定找到的对不对..可打印机不能不用,所以就按网上说的方法将打印机清零,效果不错. 方法: 1.在打印时提示废墨盒已满时,将打印机电源拔掉,然后按多次电源开关,将电放完为止: 2.按住电源开关不放,并同时接上电源线,5秒过后(反正我是5秒左右,也可以按久些),松开电源开关,这时会出现一个打印机副本: 3.运行清零软件.打印机为ip1980.清零软件链接http://down.51cto.