呵呵,没有意义的事情,因为在内存里他都是二进制,所谓十进制二进制十六进制,只是显示的问题,也就是字符串的问题,要显示问题很好转换
如果要用堆栈,那就比较麻烦,也没有必要
///
/// 堆栈
///
private Stack
public void DtoB( int iNum )
{
Intstack.Push( iNum % 2 ); // 余数入栈
int d = iNum / 2;
if ( d != 0 )
DtoB( d ); // 求下一个二进制位
return;
}
//下面是调用程序
public static void Main()
{
Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
while ( Intstack.Count != 0 )
s.Insert( 0, Intstack.Pop() ); // 从堆栈中取出所有的二进制位
MessageBox.Show( "二进制数:" + s.ToString() );
}
//要转换下面的方法更简单,而且效率更高
public string DtoB1( int iNum )
{
int len = sizeof( int ) * 8;
StringBuilder s = new StringBuilder();
int exmple = 1 << len - 1;
int tmp = iNum;
for ( int i = 0; i < len; i++ )
{
if ( ( tmp & exmple ) == 0 )
s.Append( "0" );
else
s.Append( "1" );
tmp <<= 1;
}
return s.ToString();
}