二进制(1
' s和0
&s; s)具有哪种数据类型?在一个例子中,我将它们视为具有字符串作为数据类型。
据我所知,字符串不用于执行计算的变量。
因此,当两个二进制变量的数据类型为字符串并且它们可以相互操作时,将如何进行?
答案 0 :(得分:4)
没有数据类型"二进制"。有一个类允许您处理位BitVector32
或者您只需将二进制值从string
(文本)转换为int
// binary , base
int binary = Convert.ToInt32("00000101", 2);
如果你真的想要,你可以创建一个Binary
类,然后重载运算符,如下所示:
public class Binary
{
private int value;
public Binary(int value)
{
this.value = value;
}
public static implicit operator Binary(string b)
{
return new Binary(Convert.ToInt32(b, 2));
}
public static explicit operator int(Binary b)
{
return b.value;
}
public static Binary operator +(Binary a, Binary b)
{
return new Binary(a.value + b.value);
}
}
然后有了这个
Binary bin1 = "0001"; // 1
Binary bin2 = "0010"; // 2
Binary result = bin1 + bin2; // 3
int integerResult = (int)result; // 3
答案 1 :(得分:0)
感谢您的澄清。当您将二进制值转换为字符串时,您已经放弃了直接的乘法能力,因为这些值不再是数字(string s = "3" * "4";
也不起作用的原因相同)。您必须将值转换为数字数据类型以执行数学运算,然后返回字符串以进行显示。
string b1 = Convert.ToString(3, 2);
string b2 = Convert.ToString(4, 2);
string product = Convert.ToString(Convert.ToInt32(b1, 2) * Convert.ToInt32(b2, 2), 2);
Console.WriteLine(product); //
Console.WriteLine(Convert.ToInt32(product, 2));