BitVector32 Структура
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет простую структуру с объемом памяти 32 бита, в которой хранятся логические значения и двухбайтовые целые числа.
public value class BitVector32
public value class BitVector32 : IEquatable<System::Collections::Specialized::BitVector32>
public struct BitVector32
public struct BitVector32 : IEquatable<System.Collections.Specialized.BitVector32>
type BitVector32 = struct
Public Structure BitVector32
Public Structure BitVector32
Implements IEquatable(Of BitVector32)
- Наследование
- Реализации
Примеры
В следующем примере кода используется в BitVector32 качестве коллекции битовых флагов.
#using <system.dll>
using namespace System;
using namespace System::Collections::Specialized;
int main()
{
// Creates and initializes a BitVector32 with all bit flags set to FALSE.
BitVector32 myBV(0);
// Creates masks to isolate each of the first five bit flags.
int myBit1 = BitVector32::CreateMask();
int myBit2 = BitVector32::CreateMask( myBit1 );
int myBit3 = BitVector32::CreateMask( myBit2 );
int myBit4 = BitVector32::CreateMask( myBit3 );
int myBit5 = BitVector32::CreateMask( myBit4 );
// Sets the alternating bits to TRUE.
Console::WriteLine( "Setting alternating bits to TRUE:" );
Console::WriteLine( " Initial: {0}", myBV );
myBV[ myBit1 ] = true;
Console::WriteLine( " myBit1 = TRUE: {0}", myBV );
myBV[ myBit3 ] = true;
Console::WriteLine( " myBit3 = TRUE: {0}", myBV );
myBV[ myBit5 ] = true;
Console::WriteLine( " myBit5 = TRUE: {0}", myBV );
}
/*
This code produces the following output.
Setting alternating bits to TRUE:
Initial: BitVector32 {00000000000000000000000000000000}
myBit1 = TRUE: BitVector32 {00000000000000000000000000000001}
myBit3 = TRUE: BitVector32 {00000000000000000000000000000101}
myBit5 = TRUE: BitVector32 {00000000000000000000000000010101}
*/
using System;
using System.Collections.Specialized;
public class SamplesBitVector32 {
public static void Main() {
// Creates and initializes a BitVector32 with all bit flags set to FALSE.
BitVector32 myBV = new BitVector32( 0 );
// Creates masks to isolate each of the first five bit flags.
int myBit1 = BitVector32.CreateMask();
int myBit2 = BitVector32.CreateMask( myBit1 );
int myBit3 = BitVector32.CreateMask( myBit2 );
int myBit4 = BitVector32.CreateMask( myBit3 );
int myBit5 = BitVector32.CreateMask( myBit4 );
// Sets the alternating bits to TRUE.
Console.WriteLine( "Setting alternating bits to TRUE:" );
Console.WriteLine( " Initial: {0}", myBV.ToString() );
myBV[myBit1] = true;
Console.WriteLine( " myBit1 = TRUE: {0}", myBV.ToString() );
myBV[myBit3] = true;
Console.WriteLine( " myBit3 = TRUE: {0}", myBV.ToString() );
myBV[myBit5] = true;
Console.WriteLine( " myBit5 = TRUE: {0}", myBV.ToString() );
}
}
/*
This code produces the following output.
Setting alternating bits to TRUE:
Initial: BitVector32{00000000000000000000000000000000}
myBit1 = TRUE: BitVector32{00000000000000000000000000000001}
myBit3 = TRUE: BitVector32{00000000000000000000000000000101}
myBit5 = TRUE: BitVector32{00000000000000000000000000010101}
*/
Imports System.Collections.Specialized
Public Class SamplesBitVector32
Public Shared Sub Main()
' Creates and initializes a BitVector32 with all bit flags set to FALSE.
Dim myBV As New BitVector32(0)
' Creates masks to isolate each of the first five bit flags.
Dim myBit1 As Integer = BitVector32.CreateMask()
Dim myBit2 As Integer = BitVector32.CreateMask(myBit1)
Dim myBit3 As Integer = BitVector32.CreateMask(myBit2)
Dim myBit4 As Integer = BitVector32.CreateMask(myBit3)
Dim myBit5 As Integer = BitVector32.CreateMask(myBit4)
' Sets the alternating bits to TRUE.
Console.WriteLine("Setting alternating bits to TRUE:")
Console.WriteLine(" Initial: {0}", myBV.ToString())
myBV(myBit1) = True
Console.WriteLine(" myBit1 = TRUE: {0}", myBV.ToString())
myBV(myBit3) = True
Console.WriteLine(" myBit3 = TRUE: {0}", myBV.ToString())
myBV(myBit5) = True
Console.WriteLine(" myBit5 = TRUE: {0}", myBV.ToString())
End Sub
End Class
' This code produces the following output.
'
' Setting alternating bits to TRUE:
' Initial: BitVector32{00000000000000000000000000000000}
' myBit1 = TRUE: BitVector32{00000000000000000000000000000001}
' myBit3 = TRUE: BitVector32{00000000000000000000000000000101}
' myBit5 = TRUE: BitVector32{00000000000000000000000000010101}
В следующем примере кода используется BitVector32 в качестве коллекции разделов.
#using <system.dll>
using namespace System;
using namespace System::Collections::Specialized;
int main()
{
// Creates and initializes a BitVector32.
BitVector32 myBV(0);
// Creates four sections in the BitVector32 with maximum values 6, 3, 1, and 15.
// mySect3, which uses exactly one bit, can also be used as a bit flag.
BitVector32::Section mySect1 = BitVector32::CreateSection( 6 );
BitVector32::Section mySect2 = BitVector32::CreateSection( 3, mySect1 );
BitVector32::Section mySect3 = BitVector32::CreateSection( 1, mySect2 );
BitVector32::Section mySect4 = BitVector32::CreateSection( 15, mySect3 );
// Displays the values of the sections.
Console::WriteLine( "Initial values:" );
Console::WriteLine( "\tmySect1: {0}", myBV[ mySect1 ] );
Console::WriteLine( "\tmySect2: {0}", myBV[ mySect2 ] );
Console::WriteLine( "\tmySect3: {0}", myBV[ mySect3 ] );
Console::WriteLine( "\tmySect4: {0}", myBV[ mySect4 ] );
// Sets each section to a new value and displays the value of the BitVector32 at each step.
Console::WriteLine( "Changing the values of each section:" );
Console::WriteLine( "\tInitial: \t {0}", myBV );
myBV[ mySect1 ] = 5;
Console::WriteLine( "\tmySect1 = 5:\t {0}", myBV );
myBV[ mySect2 ] = 3;
Console::WriteLine( "\tmySect2 = 3:\t {0}", myBV );
myBV[ mySect3 ] = 1;
Console::WriteLine( "\tmySect3 = 1:\t {0}", myBV );
myBV[ mySect4 ] = 9;
Console::WriteLine( "\tmySect4 = 9:\t {0}", myBV );
// Displays the values of the sections.
Console::WriteLine( "New values:" );
Console::WriteLine( "\tmySect1: {0}", myBV[ mySect1 ] );
Console::WriteLine( "\tmySect2: {0}", myBV[ mySect2 ] );
Console::WriteLine( "\tmySect3: {0}", myBV[ mySect3 ] );
Console::WriteLine( "\tmySect4: {0}", myBV[ mySect4 ] );
}
/*
This code produces the following output.
Initial values:
mySect1: 0
mySect2: 0
mySect3: 0
mySect4: 0
Changing the values of each section:
Initial: BitVector32 {00000000000000000000000000000000}
mySect1 = 5: BitVector32 {00000000000000000000000000000101}
mySect2 = 3: BitVector32 {00000000000000000000000000011101}
mySect3 = 1: BitVector32 {00000000000000000000000000111101}
mySect4 = 9: BitVector32 {00000000000000000000001001111101}
New values:
mySect1: 5
mySect2: 3
mySect3: 1
mySect4: 9
*/
using System;
using System.Collections.Specialized;
public class SamplesBitVector32 {
public static void Main() {
// Creates and initializes a BitVector32.
BitVector32 myBV = new BitVector32( 0 );
// Creates four sections in the BitVector32 with maximum values 6, 3, 1, and 15.
// mySect3, which uses exactly one bit, can also be used as a bit flag.
BitVector32.Section mySect1 = BitVector32.CreateSection( 6 );
BitVector32.Section mySect2 = BitVector32.CreateSection( 3, mySect1 );
BitVector32.Section mySect3 = BitVector32.CreateSection( 1, mySect2 );
BitVector32.Section mySect4 = BitVector32.CreateSection( 15, mySect3 );
// Displays the values of the sections.
Console.WriteLine( "Initial values:" );
Console.WriteLine( "\tmySect1: {0}", myBV[mySect1] );
Console.WriteLine( "\tmySect2: {0}", myBV[mySect2] );
Console.WriteLine( "\tmySect3: {0}", myBV[mySect3] );
Console.WriteLine( "\tmySect4: {0}", myBV[mySect4] );
// Sets each section to a new value and displays the value of the BitVector32 at each step.
Console.WriteLine( "Changing the values of each section:" );
Console.WriteLine( "\tInitial: \t{0}", myBV.ToString() );
myBV[mySect1] = 5;
Console.WriteLine( "\tmySect1 = 5:\t{0}", myBV.ToString() );
myBV[mySect2] = 3;
Console.WriteLine( "\tmySect2 = 3:\t{0}", myBV.ToString() );
myBV[mySect3] = 1;
Console.WriteLine( "\tmySect3 = 1:\t{0}", myBV.ToString() );
myBV[mySect4] = 9;
Console.WriteLine( "\tmySect4 = 9:\t{0}", myBV.ToString() );
// Displays the values of the sections.
Console.WriteLine( "New values:" );
Console.WriteLine( "\tmySect1: {0}", myBV[mySect1] );
Console.WriteLine( "\tmySect2: {0}", myBV[mySect2] );
Console.WriteLine( "\tmySect3: {0}", myBV[mySect3] );
Console.WriteLine( "\tmySect4: {0}", myBV[mySect4] );
}
}
/*
This code produces the following output.
Initial values:
mySect1: 0
mySect2: 0
mySect3: 0
mySect4: 0
Changing the values of each section:
Initial: BitVector32{00000000000000000000000000000000}
mySect1 = 5: BitVector32{00000000000000000000000000000101}
mySect2 = 3: BitVector32{00000000000000000000000000011101}
mySect3 = 1: BitVector32{00000000000000000000000000111101}
mySect4 = 9: BitVector32{00000000000000000000001001111101}
New values:
mySect1: 5
mySect2: 3
mySect3: 1
mySect4: 9
*/
Imports System.Collections.Specialized
Public Class SamplesBitVector32
Public Shared Sub Main()
' Creates and initializes a BitVector32.
Dim myBV As New BitVector32(0)
' Creates four sections in the BitVector32 with maximum values 6, 3, 1, and 15.
' mySect3, which uses exactly one bit, can also be used as a bit flag.
Dim mySect1 As BitVector32.Section = BitVector32.CreateSection(6)
Dim mySect2 As BitVector32.Section = BitVector32.CreateSection(3, mySect1)
Dim mySect3 As BitVector32.Section = BitVector32.CreateSection(1, mySect2)
Dim mySect4 As BitVector32.Section = BitVector32.CreateSection(15, mySect3)
' Displays the values of the sections.
Console.WriteLine("Initial values:")
Console.WriteLine(ControlChars.Tab + "mySect1: {0}", myBV(mySect1))
Console.WriteLine(ControlChars.Tab + "mySect2: {0}", myBV(mySect2))
Console.WriteLine(ControlChars.Tab + "mySect3: {0}", myBV(mySect3))
Console.WriteLine(ControlChars.Tab + "mySect4: {0}", myBV(mySect4))
' Sets each section to a new value and displays the value of the BitVector32 at each step.
Console.WriteLine("Changing the values of each section:")
Console.WriteLine(ControlChars.Tab + "Initial: " + ControlChars.Tab + "{0}", myBV.ToString())
myBV(mySect1) = 5
Console.WriteLine(ControlChars.Tab + "mySect1 = 5:" + ControlChars.Tab + "{0}", myBV.ToString())
myBV(mySect2) = 3
Console.WriteLine(ControlChars.Tab + "mySect2 = 3:" + ControlChars.Tab + "{0}", myBV.ToString())
myBV(mySect3) = 1
Console.WriteLine(ControlChars.Tab + "mySect3 = 1:" + ControlChars.Tab + "{0}", myBV.ToString())
myBV(mySect4) = 9
Console.WriteLine(ControlChars.Tab + "mySect4 = 9:" + ControlChars.Tab + "{0}", myBV.ToString())
' Displays the values of the sections.
Console.WriteLine("New values:")
Console.WriteLine(ControlChars.Tab + "mySect1: {0}", myBV(mySect1))
Console.WriteLine(ControlChars.Tab + "mySect2: {0}", myBV(mySect2))
Console.WriteLine(ControlChars.Tab + "mySect3: {0}", myBV(mySect3))
Console.WriteLine(ControlChars.Tab + "mySect4: {0}", myBV(mySect4))
End Sub
End Class
' This code produces the following output.
'
' Initial values:
' mySect1: 0
' mySect2: 0
' mySect3: 0
' mySect4: 0
' Changing the values of each section:
' Initial: BitVector32{00000000000000000000000000000000}
' mySect1 = 5: BitVector32{00000000000000000000000000000101}
' mySect2 = 3: BitVector32{00000000000000000000000000011101}
' mySect3 = 1: BitVector32{00000000000000000000000000111101}
' mySect4 = 9: BitVector32{00000000000000000000001001111101}
' New values:
' mySect1: 5
' mySect2: 3
' mySect3: 1
' mySect4: 9
Комментарии
BitVector32 является более эффективным, чем BitArray для логических значений и небольших целых чисел, которые используются внутри. Экземпляр BitArray класса может увеличиваться на неопределенный срок, но он имеет дополнительные затраты на память и производительность, необходимые экземпляру класса. В отличие от этого, используется BitVector32 только 32 бита.
BitVector32 Структуру можно настроить для хранения разделов для небольших целых чисел или битовых флагов для логических значений, но не для обоих. A BitVector32.Section — это окно в и BitVector32 состоит из наименьшего числа последовательных битов, которые могут содержать максимальное значение, указанное в CreateSection. Например, раздел с максимальным значением 1 состоит только из одного бита, а раздел с максимальным значением 5 состоит из трех битов. Вы можете создать BitVector32.Section значение с максимальным значением 1, которое будет использоваться в качестве логического значения, что позволяет хранить целые числа и логические значения в одном и том же BitVector32.
Некоторые члены можно использовать для BitVector32 настройки в качестве разделов, а другие элементы можно использовать для одного, настроенного как битовые флаги. Например, BitVector32.Item[] свойство является индексатором для настраиваемого BitVector32 в качестве разделов, а BitVector32.Item[] свойство — индексатором, BitVector32 настроенным как битовые флаги. CreateMask создает ряд масок, которые можно использовать для доступа к отдельным битам в настроенном BitVector32 виде битовых флагов.
Использование маски для настроенного BitVector32 в качестве разделов может привести к непредвиденным результатам.
Конструкторы
BitVector32(BitVector32) |
Инициализирует новый экземпляр структуры BitVector32, содержащий данные, представленные в существующей структуре BitVector32. |
BitVector32(Int32) |
Инициализирует новый экземпляр структуры BitVector32, содержащий данные, представленные в целом числе. |
Свойства
Data |
Получает значение структуры BitVector32 в виде целого числа. |
Item[BitVector32+Section] |
Получает или задает значение, хранящееся в указанной структуре BitVector32.Section. |
Item[Int32] |
Получает или задает состояние одноразрядного флага, указанного определенной маской. |
Методы
CreateMask() |
Создает первую маску в наборе масок, которую можно использовать для получения отдельных разрядов в структуре BitVector32, которая построена в виде одноразрядных флагов. |
CreateMask(Int32) |
Создает дополнительную маску, следующую за указанной маской в наборе масок, которую можно использовать для получения отдельных разрядов в структуре BitVector32, построенной в виде одноразрядных флагов. |
CreateSection(Int16) |
Создает первую структуру BitVector32.Section в наборе разделов, который содержит двухбайтовые целые числа. |
CreateSection(Int16, BitVector32+Section) |
Создает новую структуру BitVector32.Section, следующую за указанной структурой BitVector32.Section в наборе разделов, который содержит двухбайтовые целые числа. |
Equals(BitVector32) |
Указывает, равен ли текущий экземпляр другому экземпляру того же типа. |
Equals(Object) |
Определяет, равен ли указанный объект структуре BitVector32. |
GetHashCode() |
Играет роль хэш-функции для структуры BitVector32. |
ToString() |
Возвращает строку, которая представляет текущий объект BitVector32. |
ToString(BitVector32) |
Возвращает строку, представляющую указанный объект BitVector32. |