umee.niit Ответов: 1

У меня возникла проблема с использованием битовых полей в C++


у меня есть проблема, в которой мне нужно общаться между C и C#, и мне нужно отправлять данные из C в битовом формате в C# и печатать графику в C# соответственно.
я должен использовать только 4 бита для стороны (ex triangle) и 4,4 бита для (x,y). затем извлеките их в C# и затем соответственно нарисуйте треугольник. Проблема в том, что, используя только 4 бита, я смогу передать только 0-15 чисел, но пользователь может свободно вводить числа от 0 до 32767. Как я увеличу лимит чисел, хранящихся в 4 битах, с 16 до 32768 и как тогда получить эти данные в c#? я использую сокет для межпроцессной связи.

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

сокеты использовались для межпроцессной связи, а битовые поля - для первоначального назначения переменной Short для хранения битов

Patrice T

Почему вы должны иметь дело с 4-битными полями ?

umee.niit

это проблема, поставленная перед нами нашим инструктором

Richard MacCutchan

Используйте правильные целые числа для передачи чисел.

umee.niit

ладно. тогда не могли бы вы предложить метод передачи данных из программы на языке Си в C#? используя любые МПК

umee.niit

сокет, который я использовал, не работает

1 Ответов

Рейтинг:
1

OriginalGriff

Вы не можете хранить любое значение больше 15 в четырех битах: есть только 16 различных комбинаций 0 и 1 в четырехбитном числе:

0000   0
0001   1
0010   2
0011   3
0100   4
0101   5
0110   6
0111   7
1000   8
1001   9
1010  10
1011  11
1100  12
1101  13
1110  14
1111  15
Чтобы получить любое большее значение, вам нужно больше битов.
Для хранения значений от 0 до 32767 включительно требуется минимум 15 бит.
Это закон математики, а не вычислений!


umee.niit

не можем ли мы уменьшить разрешение двоичного числа

OriginalGriff

Как вы думаете, каким образом мы могли бы сделать это, чтобы втиснуть 32 767 различных значений в пространство для 16?
Это было бы похоже на преобразование растрового изображения Моны Лизы в изображение EGA шириной 16 пикселей и высотой 16 пикселей. Это будет больше похоже на Мардж Симпсон, чем на шедевр да Винчи! :смеяться:

umee.niit

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