用c#语言写一个将十进制转换为二进制的程序

2024-12-30 21:47:10
推荐回答(4个)
回答1:

public static void main(string [] args) {
Console.WriteLine("请输入一个十进制的整数:");
// 提示用户输入一个整数
int shu = Console.Readline();
int i = 0;
int index = 0;
while (shu > 0) {
// 循环条件如果这个数大于‘0’并且数组的下标元素不为‘0’时一直循环
num[i] = shu % 2;
// 得到您输入的这个数的余数(%2得到的也是转换成二进制后数中的第一个元素)
shu = shu / 2;
// 您输入的这个数经过第一次循环后结果变成原来的数除‘2’后的结果
i++; // 循环变量递增
index = i;// 把变量的值依次赋给‘index’变量
}
Console.WriteLine(结果为:);
for (i = index; i >= 0; i--) {
Console.WriteLine(num[i]);
// 结果为得到的所有下标元素的倒数,就逆着输入这些元素
}

}

回答2:

呵呵,没有意义的事情,因为在内存里他都是二进制,所谓十进制二进制十六进制,只是显示的问题,也就是字符串的问题,要显示问题很好转换
如果要用堆栈,那就比较麻烦,也没有必要
///


///
堆栈
///

private
Stack
Intstack
=
new
Stack(
5
);
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();
}

回答3:

int i = 9;
Convert.toInt32(i,2);

或者
int i = 9;
string s = "";
while (i>0)
{
s =Convert.ToString(i % 2) + s;
i = i / 2 ;
}

回答4:

public static ArrayList TransTen_Two(int tenNum)
{
ArrayList twoNum = new ArrayList();
for(int i = 0;tenNum>0;i++)
{
twoNum.Add(tenNum % 2);
tenNum = tenNum / 2;
}
twoNum.Reverse();
return twoNum;
}