dalv_happy
@dalv_happy

Какой тип данных для работы с двоичной системой счисления существует в C#?

Добрый день. Нужно реализовать побитовое или и для работы выбрал переменную типа bool:
bool[] st = new bool[] { false, true, true, true, false, true, false, false, true, true, true, true};

Но меня напрягает false, true хочу видеть привычные 0, 1. Но хотя это всё капризы. Что посоветуете для работы с бинарными числами?
P.s. Массив bool выбрал из-за удобства реализации (см. скриншот) т. е. мне нужно делать побитовое или до тех пор пока все 11 нулей не будут использованы.42f02796ce6d40ce95b3ee5241eac737.png
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 3
Vestail
@Vestail
Software Engineer
Ответ написан
Комментировать
@Melz
Ну как бы все, хотя обычно делают как-то так

unsigned int myAdd(unsigned int a, unsigned int b)
{
    unsigned int carry = a & b;
    unsigned int result = a ^ b;
    while(carry != 0)
    {
        unsigned int shiftedcarry = carry << 1;
        carry = result & shiftedcarry;
        result ^= shiftedcarry;
    }
    return result;
}
Ответ написан
Комментировать
lexxpavlov
@lexxpavlov
Программист, преподаватель
public struct MyBool
{
    private byte _val;

    public byte Value
    {
        get { return _val; }
        set { _val = (byte)(value == 0 ? 0 : 1); }
    }

    public MyBool(int a)
    {
        _val = (byte)(a == 0 ? 0 : 1);
    }

    public override string ToString()
    {
        return _val == 0 ? "0" : "1";
    }

    public override int GetHashCode()
    {
        return _val;
    }

    public override bool Equals(object obj)
    {
        return _val == ((MyBool)obj).Value;
    }

    public static implicit operator MyBool(int a)
    {
        return new MyBool(a);
    }

    public static implicit operator int(MyBool a)
    {
        return a._val;
    }
}


MyBool[] arr1 = {1, 0, 1, 1, 0, 0, 0, 1};
MyBool[] arr2 = {1, 0, 2, 3, 0, 0, 0, -5}; 
// автоматически преобразуется в {1, 0, 1, 1, 0, 0, 0, 1}
// во всех си-подобных языках не-ноль - это истина
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы