Member 13308214 Ответов: 2

Как я могу получить доступ к битам в visual basic.net


Привет
Я работаю над кодом, который нуждается в доступе к битам.

У меня есть массив, который получает данные из последовательного порта в переменную с именем "arr".
с помощью метода " serialport.read (byte(), int32, int32)".

Что мне нужно, так это доступ к битам.

Например:
arr(3) получает байт данных, содержащий - (F0)Hex = ("11110000")Bin.
Как я могу изменить третий бит?
11110000

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

Я попытался изменить ячейки, добавив еще одну переменную из 8 бит и получив данные с индексом "var(i)"
после того, как я присвою данные Var.
Без успеха.

2 Ответов

Рейтинг:
2

OriginalGriff

Смотреть на Логические и побитовые операторы в Visual Basic | Microsoft Docs[^] - побитовые операторы-это то, на что вам нужно посмотреть.
Or позволяет установить бит на единицу, And с Not позволяет сбросить его до нуля.


Рейтинг:
0

Thomas Daniels

Если я правильно понимаю, у вас есть Byte и хотите изменить третий бит, считая слева.

Это возможно, но вы должны знать, какую операцию вы хотите сделать на третьем бите. Я могу придумать три варианта: 1) Вы хотите установить бит на 1 2) вы хотите установить бит на 0 3) Вы хотите перевернуть бит (0 становится 1, а 1 становится 0).

Если вы хотите выполнить первую операцию (установив бит на 1), Вы можете сделать это:

Dim modifier As Byte = 32 ' (00100000)
Dim result As Byte = arr(3) Or modifier
При этом выполняется побитовая операция или.

Если вы хотите выполнить вторую операцию (установив бит на 0), вы можете сделать это:
Dim mask As Byte = 223 ' (11011111)
Dim result As Byte = arr(3) And mask
При этом выполняется побитовая операция AND.

Если вы хотите выполнить третью операцию (перевернуть бит), вы можете сделать это:
Dim modifier As Byte = 32 ' (00100000)
Dim result As Byte = arr(3) Xor modifier
При этом выполняется побитовая операция XOR.

Чтобы узнать больше об этих побитовых операциях, обратитесь к моей статье: Понять, как работают побитовые операторы (C# и VB.NET примеры)[^]