Far*_*kar 3 c# binary algebraic-data-types
二进制(1
's 和0
's)有什么数据类型?在一个例子中,我看到它们将字符串作为数据类型。
由此我知道字符串不用于执行计算的变量。
那么当两个二进制变量的数据类型为字符串并且它们相互操作时,该怎么做呢?
没有数据类型“二进制”。有一个类允许您处理位BitVector32
或者您可以简单地将二进制值从string
(文本)转换为int
// binary , base
int binary = Convert.ToInt32("00000101", 2);
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后有这个
Binary bin1 = "0001"; // 1
Binary bin2 = "0010"; // 2
Binary result = bin1 + bin2; // 3
int integerResult = (int)result; // 3
Run Code Online (Sandbox Code Playgroud)
感谢您的澄清。当您将二进制值转换为字符串时,您就放弃了直接相乘的能力,因为这些值不再是数字(同样的原因也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));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21914 次 |
最近记录: |