int InputInteger = -15; int[] bit; bit = new int[32]; for( int i=0; i<32; i++ ) { bit[i] = InputInteger & 0x0001; InputInteger = InputInteger >> 1; } for ( int i=31; i>=0; i-- ) { System.Console.Write( "{0} ", bit[i] ); }
这个我以前做功课的时候也碰到过。就是除2取整法呀 就是循环地去除2,把他放到字符串里,到时在倒过来就行了。 Very Easy!
这是我的程序: using System;class Test { static void Main() { foreach (int a in new int [] {0, 123456789, -123456789}) Console.WriteLine("dec:{0,10} hex:{1,8} bin:{2,32}", a, a.ToString("X"), Int2Bin(a)); }
public static string Int2Bin(int n) { uint un = (uint)n; string s = null, t = null; for (; un > 0; un /= 2) s += un % 2; if (s == null) s = "0"; for (int i = s.Length - 1; i >= 0; i--) t += s[i]; return t; } }运行结果如下: dec: 0 hex: 0 bin: 0 dec: 123456789 hex: 75BCD15 bin: 111010110111100110100010101 dec:-123456789 hex:F8A432EB bin:11111000101001000011001011101011
> 哪二进制呢
我猜是
a.ToString("B"); // 2 进制
我明天上班时在 Visual Studio .NET 里试一下。
decimal Dec=20M;
int[] Bin=Decimal.GetBits(Dec);返回值是长度为四个元素的、由 32 位有符号整数构成的数组。
返回数组的第一个、第二个和第三个元素分别包含 96 位整数的低 32 位、中间 32 位和高 32 位。
返回数组的第四个元素包含比例因子和符号。该元素由以下部分组成:
0 到 15 位(即字的低位部分)不被使用且必须为零。
16 到 23 位必须包含一个 0 到 28 之间的指数,指示 10 的幂,用以分隔该整数。
24 到 30 位不被使用且必须为零。
31 位包含符号,0 表示正,1 表示负。
请注意,位的表示有正零和负零之分。在所有运算中,这些值被视为相等。
int[] bit;
bit = new int[32];
for( int i=0; i<32; i++ )
{
bit[i] = InputInteger & 0x0001;
InputInteger = InputInteger >> 1;
}
for ( int i=31; i>=0; i-- )
{
System.Console.Write( "{0} ", bit[i] );
}
就是循环地去除2,把他放到字符串里,到时在倒过来就行了。
Very Easy!
using System;class Test {
static void Main() {
foreach (int a in new int [] {0, 123456789, -123456789})
Console.WriteLine("dec:{0,10} hex:{1,8} bin:{2,32}", a, a.ToString("X"), Int2Bin(a));
}
public static string Int2Bin(int n)
{
uint un = (uint)n;
string s = null, t = null;
for (; un > 0; un /= 2) s += un % 2;
if (s == null) s = "0";
for (int i = s.Length - 1; i >= 0; i--) t += s[i];
return t;
}
}运行结果如下:
dec: 0 hex: 0 bin: 0
dec: 123456789 hex: 75BCD15 bin: 111010110111100110100010101
dec:-123456789 hex:F8A432EB bin:11111000101001000011001011101011
我试了,这样肯定可以的。
System.Convert.ToString(int nValue, int nBase); 表示将 nValue 转换为 nBase 进制的字符串。其中 nBase 只能是: 2, 8, 10, 16。