C#能否把带符号的二进制数直接转换成十进制?-求助

cckoo 2012-05-15 03:50:26
如题,比如 int a=207;
换算成二进制是1100 1111,最前一个为符号位,需要先求反码再+1才能得到带符号的十进制数,c#中有没有现成的函数,能直接转换的?如果没有,用c#如何实现反码补码之类的运算,大大们给个例子,感谢。
分不多,求解答。
...全文
805 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dalmeeme 2012-05-16
  • 打赏
  • 举报
回复
楼主真厚道。
cckoo 2012-05-16
  • 打赏
  • 举报
回复
谢谢楼上的各位,我已经解决了,代码附上,散分。
int a = 209;
a = a - 1;
a = ~a;
string s = Convert.ToString(a, 2);
string ss = s.Substring(32 - 6, 6);
int aa = Convert.ToInt32(ss, 2);
label1.Text =(0-aa).ToString();
迪迦凹凸曼 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

2楼大大的只是把十进制转换成了二进制的字符串,我的意思是,把二进制字符串“10101111”转换成带符号的十进制数-47,因为计算机负数存的是补码,需要转换成原码,才能得到
[/Quote]
判断符号位为0,取其真值求和
为1,真值各位取反,最低位+1,然后求和
cckoo 2012-05-15
  • 打赏
  • 举报
回复
2楼大大的只是把十进制转换成了二进制的字符串,我的意思是,把二进制字符串“10101111”转换成带符号的十进制数-47,因为计算机负数存的是补码,需要转换成原码,才能得到
cckoo 2012-05-15
  • 打赏
  • 举报
回复
首先感谢解答。
1楼的只能转换正数的情况,如果是负数,没这么简单了,需要先求反码,再求补码。
我再测试下2楼大大的。
dalmeeme 2012-05-15
  • 打赏
  • 举报
回复
int a = 207;
string s = Convert.ToString(a, 2);
输出s
迪迦凹凸曼 2012-05-15
  • 打赏
  • 举报
回复

public static int TwoToTen(string num2)
{
int num10 = 0;
for (int i = 0; i < num2.Length; i++)
{
num10 += (int)Math.Pow(2, i) * Convert.ToInt32(num2.Substring(num2.Length - i - 1, 1));
}
return num10;
}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧