Common Bit Tasks
1) If you XOR a bit with its own negated value, you will always get 1. Therefore thesolution to a ^ (~a) will be the sequence of 1s.
consider a is of data-type byte.
example:
a = 00000001
~a = 11111110
Now a ^ (~a) = 11111111
2) An operation like x & (~0 << n) clears the n rightmost bits of x. The value ~o is the sequences of 1s, so by shifting it by n, we have a bunch of ones followed by n zeros. By doing AND we clear the the rightmost n digits
of x.
3) Bit Facts and Tricks:
x ^ 0′s = x x & 0′s = 0 x | 0′s = x
x ^ 1′s = ~x x & 1′s = x x | 1′s = 1′s
x ^ x = 0 x & x = x x | x = x
4) Get Bit :
If I want to get the bit at i-th position, this method shifts1 over by i bits , creating a value and performing an
AND operation with the numbernum. If the resultant value is zero, that bit is unset else, that bit is set.
|
1
2
3
|
boolean int num,inti) { return((num & (1<< i)) != 0);} |
5) Set Bit:
If I want to set the bit at i-th position, this method shifts1 over by i bits , creating a value and performing an
OR operation with the numbernum.
|
1
2
3
|
public setBit(intnum,int i) { returnnum | (1<< i);} |
6) Clear Bit:
This method operates in reverse way as the setBit method works. To clear the
i-th bit we first negate the result obtained from 1 << i and perform AND operation with the numbernum.
|
1
2
3
4
|
public clearBit(intnum,int i) { intmask = ~(1<< i); returnnum & mask;} |
7) Clear all the MSB through i (inclusive) 高位到低位清零(包括低位)
This method is meant for clearing all the MSB’s (Most Significant Bits) through i (inclusive) we do:
|
1
2
3
4
|
public clearBitsMSBThrough(intnum,int i) { intmask = (1 << (i + 1) ) - 1; returnnum & mask;} |
8) Clear all the bits from i through o(inclusive) 低位到0位清零 (包括低位)
This method is meant for clearing all the bits from i through 0 from the number num:
|
1
2
3
4
|
public clearBitsIthrough0(intnum,int i) { intmask = ~(1<< (i + 1)) -1; returnnum & mask;} |
Common Bit Tasks的更多相关文章
- What is Away3D
做了几个基于Flash平台的3D的项目,一路走来收获颇多.Away3D作为一个开源的Flash3D引擎,在3D页游领域,无疑是当前OGRE在国内的地位. 翻译出了多年前做Away3D中国社区的时候翻译 ...
- DotNet 资源大全中文版(Awesome最新版)
Awesome系列的.Net资源整理.awesome-dotnet是由quozd发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. 算法与数据结构 ...
- F#之旅1 - Why use F#?为什么要用F#?
原文地址:http://fsharpforfunandprofit.com/why-use-fsharp/ Why use F#?Why you should consider using F# fo ...
- (转) The major advancements in Deep Learning in 2016
The major advancements in Deep Learning in 2016 Pablo Tue, Dec 6, 2016 in MACHINE LEARNING DEEP LEAR ...
- Play libs
The play.libs package contains several useful libraries that will help you to achieve common program ...
- jQuery能做些什么
来源于: Learning jQuery, 4th Edition What jQuery does: 1. Access elements in a document; $('div.content ...
- 初探YAML
YAML何许物也?在XML泛滥的情况下,YAML的出现的确让人眼前一亮,在初步学习了YAML以后,粗略的总结了一下,拿出来和大家分享.[MindMap][参考文档]YAML Specification ...
- Java Garbage Collection Basics--转载
原文地址:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html Overview Purpose ...
- YAML初探
http://www.cnblogs.com/chwkai/archive/2009/03/01/249924.html 1 概念YAML是一种人们可以轻松阅读的数据序列化格式,并且它非常适合对动态编 ...
随机推荐
- Unix系统使用的地址索引结构有什么特点?
使用地址索引表.索引节点中地址索引表标识出含有文件数据的磁盘块的分布情况.
- Python中模块之hashlib&hmac的讲解
hashlib & hmac的讲解 两个模块主要用于加密相关的操作. 1. hashlib模块 md5 具体代码如下 import hashlib ha_m5 = hashlib.md5()# ...
- ASP.NET Core部署到Windows IIS
网上已经有许多ASP.NET Core关于Widows IIS部署的文章,在部署到服务器时遇到了一些问题,在这里我就不再对原理进行阐释(复制)了,只写下一些关键环节,想看原理的同学请参考官网,此文章作 ...
- Windows上安装scapy
1. 环境: (1) 操作系统:win7 .server2012 (2) Python版本:Python3.6-64bit (3) 依赖模块Npcap(推荐) 或WinPcap. ps:从logo ...
- git修改远程仓库地址
方法有三种: 1.修改命令 git remote set-url origin [url] 例如: git remote set-url origin gitlab@gitlab.chumob.com ...
- 一看你就懂,超详细java中的ClassLoader详解
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...
- 模块机制 之commonJs、node模块 、AMD、CMD
在其他高级语言中,都有模块中这个概念,比如java的类文件,PHP有include何require机制,JS一开始就没有模块这个概念,起初,js通过<script>标签引入代码的方式显得杂 ...
- IntelliJ IDEA 14.0.3 实战搭建Spring+SpringMVC+MyBatis组合框架
简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的.虽说容易,但在框架搭建过程中仍然遇到了许多问题,因此用实 ...
- JAVA 第二天 内部类
package com.company; /** * Created by Administrator on 2016/8/23. */ public class Outter {//生成的字节码文件 ...
- windows系统和centos双系统安装引导项修改
在CentOS下修改Linux引导文件: (1)找到win10的引导 1.首先我们点击第一个系统进入centos 2.运行终端,敲入命令su,为了获取管理员权限,然后终端提 ...