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

Far*_*kar 3 c# binary algebraic-data-types

二进制(1's 和0's)有什么数据类型?在一个例子中,我看到它们将字符串作为数据类型。

由此我知道字符串不用于执行计算的变量。

那么当两个二进制变量的数据类型为字符串并且它们相互操作时,该怎么做呢?

Bru*_*oLM 5

没有数据类型“二进制”。有一个类允许您处理位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)


Jas*_*n W 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));
Run Code Online (Sandbox Code Playgroud)