posts - 9, comments - 4, trackbacks - 0, articles - 21

转:一个bit操作的类

Posted on 2007-12-20 18:18 一步一步努力向上爬 阅读(562) 评论(0)  编辑  收藏 所属分类: J2SE学习
因为工作需要,需要操纵和读写一个Java的byte中每一位的值,所以昨天写了这么一个类。

    不知道有没有更好的方法,拿出来让大家看看吧!

源代码:

/**
 * @author 沈东良 Edward Shen<a href="mailto:shendl_s@hotmail.com">shendl_s@hotmail.com</a>
 * 2007-5-23 下午03:11:45
 *执行位操作
 *
 *
 */
public class BitUtil {
 /**
  * 把字节指定的位数设为1,不管原来该位是什么。
  * @param data
  * @param pos  从0开始
  */
 public static byte setByteBitOne(byte data,int pos){
  byte compare=(byte) Math.pow(2.0,pos);
  data=(byte) (data|compare);
  return data;
 }
 /**
  * 把字节指定的位数设为0,不管原来该位是什么。
  * @param data
  * @param pos
  */
 public static byte setByteBitZero(byte data,int pos){
  byte compare=(byte) ~(byte) Math.pow(2.0,pos);
  data=(byte) (data&compare);
  return data;
 }
 
 
 
    /**
     * 返回指定字节第几个位的数字,只可能是0或者1
     * @param data
     * @param pos   从0开始的位数
     * @return
     */
 public static int getByteBit(byte data,int pos){
  int bitData = 0;
  
  byte compare=(byte) Math.pow(2.0,pos);
  if((data & compare)==compare){
   bitData =1;
   
  }
  
  
  
  return bitData;
 
 }
 /**
  * 返回一个字节的每一位的数字
  * @param data
  * @return
  */
 public static byte[] getByteBits(byte data){
  byte[] results=new byte[8];
  for(int i=0;i<8;i++){
   results[i]=(byte) BitUtil.getByteBit(data, i);
   
  }
  
   
  
  
  
  return results;
 }

 /**
  *
  */
 public BitUtil() {
  /*
   *
   */
 }

 }
 


只有注册用户登录后才能发表评论。


网站导航: