using
System;
using
System.Collections.Generic;
using
System.Text;
namespace
Bit
{
/*class methods for bits operation*/
public
class
BitOperation
{
public
Byte setBit(Byte targetByte,
int
targetPos,
int
value)
{
if
((value == 0 || value == 1) && (targetPos >= 0 && targetPos < 8))
{
int
targetPosValue = -1;
switch
(targetPos)
{
case
0:
targetPosValue = (targetByte >> 7) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x80);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0x7f);
}
break
;
}
case
1:
targetPosValue = (targetByte >> 6) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x40);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xbf);
}
break
;
}
case
2:
targetPosValue = (targetByte >> 5) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x20);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xdf);
}
break
;
}
case
3:
targetPosValue = (targetByte >> 4) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x10);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xef);
}
break
;
}
case
4:
targetPosValue = (targetByte >> 3) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x08);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xf7);
}
break
;
}
case
5:
targetPosValue = (targetByte >> 2) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x04);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xfb);
}
break
;
}
case
6:
targetPosValue = (targetByte >> 1) & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x02);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xfd);
}
break
;
}
case
7:
targetPosValue = targetByte & 0x01;
if
(targetPosValue == value)
//如果指定位的值和传的参数值相同,则没有任何操作,返回
{
break
;
}
else
{
if
(value == 1)
{
targetByte = Convert.ToByte(targetByte | 0x01);
}
else
if
(value == 0)
{
targetByte = Convert.ToByte(targetByte & 0xfe);
}
break
;
}
default
:
break
;
}
return
targetByte;
}
else
{
return
0;
}
}
public
int
getBit(Byte targetByte,
int
targetPos)
{
int
value = -1;
switch
(targetPos)
{
case
0:
value = (targetByte >> 7) & 0x01;
break
;
case
1:
value = (targetByte >> 6) & 0x01;
break
;
case
2:
value = (targetByte >> 5) & 0x01;
break
;
case
3:
value = (targetByte >> 4) & 0x01;
break
;
case
4:
value = (targetByte >> 3) & 0x01;
break
;
case
5:
value = (targetByte >> 2) & 0x01;
break
;
case
6:
value = (targetByte >> 1) & 0x01;
break
;
case
7:
value = targetByte & 0x01;
break
;
default
:
break
;
}
return
value;
}
}
}
|
本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/archive/2011/07/29/2121294.html,如需转载请自行联系原作者