二进制值的数据类型是什么?它是字符串数据类型吗?

时间:2014-10-20 03:33:51

标签: c# binary algebraic-data-types

二进制(1' s和0&s; s)具有哪种数据类型?在一个例子中,我将它们视为具有字符串作为数据类型。

据我所知,字符串不用于执行计算的变量。

因此,当两个二进制变量的数据类型为字符串并且它们可以相互操作时,将如何进行?

2 个答案:

答案 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));