2014-10-20 1 views
3

Какой тип данных двоичный (1 и 0)) есть? В одном примере я видел, что они имеют строку как тип данных.Что такое тип данных для двоичных значений? Это строковый тип данных?

От этого я знаю, что строки не используются для переменных, на которых выполняются вычисления.

Итак, когда две двоичные переменные имеют тип данных в виде строки, и они могут взаимодействовать друг с другом, как это сделать?

+1

Я чувствую много вопросов в самом вопросе. Один 0/1 является логическим (false/true), некоторые из них могут быть либо сохранены в BitArray, либо как один бит в байте. Для нескольких байтов потребуется байтовый массив (Byte []). Тем не менее, для вас доступны _no_ числовые (добавление, вычитание, умножение, деление) операторов, поскольку это всего лишь куча бит, и никто не знает, являются ли они целыми числами, одиночными точками точности или числовой системой до быть изобретен. Код, работающий с двоичными значениями в не двоичных типах (String), является плохим. – sisve

ответ

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)); 
+0

Что я имею в виду: например. string binaryValue = ConvertToString (217,2); теперь мы преобразовали целое число в его двоичную форму, которая сохраняется в строковой переменной. Теперь предположим, что мы имеем аналогичное другое строковое значение binaryValue2. Теперь оба эти являются двоичными представлениями из 2 целых чисел. Как будут выполняться математические операции над ними, если это необходимо? например. binaryValue * binaryValue2. Почему они сохраняются в виде строк при преобразовании из целых чисел? Могут ли они иметь какой-либо другой тип данных? Если нет, то? –

+0

Потому что вы использовали ConvertToString. –

+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 
+0

, а затем использовать intergerResult в программе всякий раз, когда мне нужно добавить эти конкретные значения бинария, не так ли? каждый раз, когда мы вводим двоичные файлы для добавления двоичного класса, и он выполняет вычисления и преобразует значения обратно в двоичную форму и дает нам это, правильно? –

Смежные вопросы