pohcb_sonic Ответов: 2

Как я могу кодировать 2 дополнения преобразования значения, считываемого из текстового поля?


Мне нужно реализовать 2 дополнения из значения, считанного из текстового поля. Как мне его закодировать?

Что я уже пробовал:

uint Ctrl_Pitch_Position = 0;

private void txtvehPitch_TextChanged(object sender, EventArgs e)
{
     Ctrl_Pitch_Position = Convert.ToUInt16(txtvehPitch.Text);
}

Richard MacCutchan

Что именно ты пытаешься сделать? Вы можете дополнить число довольно просто, используя побитовый оператор дополнения ~.

2 Ответов

Рейтинг:
12

OriginalGriff

Во - первых, не используйте Convert при вводе данных пользователем- всегда используйте TryParse вместо этого и сообщайте о проблемах пользователю вместо продолжения. Пользователи совершают ошибки: использование Convert означает, что ваше приложение выходит из строя вместо того, чтобы вести себя хорошо и дать ему шанс исправить проблему.

Однако два дополнения очень просто:

UInt16 x = 666;
UInt16 Complement = (UInt16)~x;


Рейтинг:
1

RickZeeland

В общем лучше использовать .Разбор, видеть: Как преобразовать строку в число - руководство по программированию на C# | Microsoft Docs[^]

Кроме того, вы можете использовать математику.Раунд(), см.: Математика.Метод Округления (Система) | Microsoft Docs[^]

Как не говорящий по-английски, мне не совсем ясно, что вы подразумеваете под "дополнением", поэтому ответ Гриффа может быть тем, что вы хотите ...


OriginalGriff

https://en.wikipedia.org/wiki/Two%27s_complement
Может помочь. Вы почти наверняка знаете его, только под другим именем.

RickZeeland

Спасибо, мои комплименты :)

OriginalGriff

И 2 Тебя ... :смеяться: