有一byte数值(例如:129),求这值的第N(N>=1,N<=8)位是否为1(如129的第8位为1)的bool表达式。
解决方案 »
- 大家给看看这行创建文件的代码哪里错了?
- 数据库的表中格式为24制的字段,显示在datagridview里时多加了日期的内容,怎么回事?
- 关于C#中的Try、catch、finally问题。
- c#建立ftp客户端:不能显示服务器目录
- c#如何截获WebBrowser控件自己发出的http请求
- 在托盘程序中,在显示窗体时,能否让任务栏上的窗体任务不显示?
- 请教各位大虾,WebBrowser显示Word的问题
- Graphics如何绘制一个透明的线条
- 为什么用toolstrip创建的工具栏那么小啊?
- WPF中怎么才能在同级控件之间直接发消息呢?
- http://www.hao803.com http://www.wjszjc.com
- 在C#里调用外部API时类型转换问题
int n=7;
for(int i=1;i<=8;i++)
{
byte bt=(byte)temp;
bt=(byte)(bt>>(8-i));
Console.WriteLine((bt&0x01)>0?true:false);
}
思路基本上是这个样子,具体性能如何,不知道
{
string str = Convert.ToByte(bt).ToString();
byte ch = (byte)(0x01<<n-1);
return (bt | ch) == ch;
}
{
byte Value = 129;
int n = 7; // n的取值为0至7,而非1至8
Console.WriteLine(Convert.ToBoolean(Value & (byte)Math.Pow(2,n)).ToString());
}
'十进制数转换成二进制数
Public Function DecToBin(ByVal value As Integer) As String
If value = 0 Then Return "0" Dim tempValue As Integer = value
Dim tempString As String = "" Dim modValue As Integer
Do
tempString += CStr(tempValue Mod 2)
tempValue = tempValue \ 2
Loop While (tempValue <> 0) Dim i As Integer
Dim returnChars As Char() = tempString.ToCharArray()
Dim returnString As String = ""
For i = tempString.Length - 1 To 0 Step -1
returnString += returnChars(i)
Next Return returnString
End Function
以上是将十进制转换为二进制的字符,再在字符中判断N位是否为1就简单了
{
byte ch = (byte)(1<<n-1);
return bt & ch > 0;
}
{
byte ch = (byte)(1<<n-1);
return bt & ch > 0;
}
{
int iCompareValue=Math.Pow(2,N);
if((int)c>=iCompareValue)
{
return true;
}
else
{
return false;
}
}
int N 8 ;
int j=0
for(int i =0;i<N;i++)
{
j=num%2;
num = num /2;
}
return j==1;
----------
佩服楼主ID和呢称的默契
{
return (((b >> (n - 1)) & 1) != 0);
}
#region GetIntToBitstring
/// <summary>
/// 把int值转化为位字符串
/// </summary>
/// <param name="intValue"></param>
/// <returns></returns>
public static string GetIntToBitstring(int intValue)
{
byte[] bs=BitConverter.GetBytes(intValue);
System.Text.StringBuilder sb=new System.Text.StringBuilder();
foreach(byte b in bs)
{
sb.Append(GetByteToBitstring(b));
}
return sb.ToString();
}
#endregion#region GetByteToBitstring
/// <summary>
/// 把byte值转化为位字符串
/// </summary>
/// <param name="byteValue"></param>
/// <returns></returns>
public static string GetByteToBitstring(byte byteValue)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
for(int i=8;i>0;i--)
{
bool isSet=IsSet(byteValue,i);
sb.Append(isSet?"1":"0");
}
return sb.ToString();
}
#endregion#region IsSet
/// <summary>
/// 判断byte第N位上是否为1
/// </summary>
/// <param name="byteValue"></param>
/// <param name="n"></param>
/// <returns></returns>
public static bool IsSet(byte byteValue, int n)
{
return (((byteValue >> (n - 1)) & 1) != 0);
}
#endregion