bit string
Ostatnio uczyłem się o typie danych i jestem bardzo ciekawy:
Na dole tej strony z dokumentami znajduje się zdanie:
... plus 5 lub 8 bajtów narzutu w zależności od długości łańcucha
W jaki sposób obsługiwane są ciągi bitów w innych językach, takich jak PHP, Java, C #, C ++ itp., Poprzez sterowniki takie jak Npgsql, ODBC itp.
W przypadku pytania nr 1 użycie smallinta lub biginta będzie znacznie bardziej wydajnym miejscem do przechowywania i być może zapewni wzrost wydajności, ponieważ liczby całkowite są obsługiwane wszędzie. Większość języków programowania z łatwością obsługuje operacje bitowe na liczbach całkowitych. Jeśli tak, to po co wprowadzać typ danych łańcuchów bitowych? Czy dotyczy to tylko przypadków wymagających dużej ilości masek bitowych? Może indeksowanie pól bitowych? Jestem ciekaw, jak indeksowanie pól bitowych odbywa się w PostgreSQL.
Jeśli chodzi o # 2, jestem zmieszany, bardziej niż ciekawy. Na przykład, co jeśli przechowuję maski bitów dnia tygodnia w polu bit (7), jeden bit na dzień, a najniższy bit reprezentuje poniedziałek. Następnie pytam o wartość w PHP i C ++. Co dostane? Dokumentacja mówi, że będę miał trochę łańcucha, jednak nie jest to coś, czego mogę użyć bezpośrednio - jak w przypadku liczb całkowitych. Czy w takim przypadku powinienem zrezygnować z bitów?
Czy ktoś może wyjaśnić, dlaczego i kiedy powinienem używać bitów lub bitów?