ここでは、typesbitandbitの値が変化するビット列を調べて操作するための関数と演算子について説明します。 (これらの表ではtypebitisのみが言及されていますが、typebit varyingの値は同じ意味で使用できます。)
ビット文字列演算子
bit | bit → bit
連結 B'10001' | | B'011' → 10001011
|
bit & bit → bit
ビット単位のAND (入力は同じ長さでなければなりません) B'10001' & B'01101' → 00001
|
bit | bit → bit
ビット単位OR (入力は同じ長さでなければなりません) B'10001' | B'01101' → 11101
|
bit # bit → bit
ビットごとの排他的OR (入力は同じ長さでなければなりません) B'10001' # B'01101' → 11100
|
~ ビット → ビット
ビット単位ではない ~ B'10001' → 01110
|
bit << integer → bit
ビット単位で左シフト (文字列の長さは保持されます) B'10001' << 3 01000 →
|
bit >> integer → bit
ビット右シフト (文字列の長さは保持されます) B'10001' >> 2 00100 →
|
バイナリ文字列で使用できる関数の一部は、次の表に示すように、ビット文字列でも使用できます。
ビット文字列関数
bit_length (bit ) → integer ビット文字列のビット数を返します。 bit_length(B'10111) → 5
|
length (ビット ) → 整数 ビット文字列のビット数を返します。 長さ (B'10111 ') 5 →
|
octet_length (bit ) → integer ビット文字列のバイト数を返します。 オクテット長 (B'1011111011') 2 →
|
overlay (bits bit PLACING newsubstring bit FROM start integer [FOR count integer ] ) → bit 開始 番目のビットで開始し、カウント ビットに拡張するビット の部分文字列を新しい部分文字列 に置き換えます。 count を省略した場合、デフォルトではnewsubstring の長さになります。
オーバーレイ (B'010101010101010' を配置するB'11111' from 2 for 3) → 0111110101010101010
|
位置 (substring bit IN bits bit ) → integer bits 内の指定された部分文字列 の最初の開始インデックスを返します。存在しない場合はゼロです。
position (B'000001101011' のB'010') → 8
|
substring (bits bit [FROM start integer ] [FOR count integer ] ) → bit 指定されている場合は、開始 番目のビット から開始し、指定されている場合はビットをカウント した後に停止する部分文字列を抽出します。 start とcount の少なくとも1つを指定します。 部分文字列 (B'110010111111' から3 for 2) → 00
|
get_bit (bits bit , n integer ) → integer ビット列からn番目 のビットを抽出する。最初の (左端の) ビットはビット0である。 get_bit (B'1010101010101010', 6) → 1
|
set_bit (bits bit , n integer , newvalue integer ) → bit ビット列のn 番目のビットをnewvalue に設定します。最初の (左端の) ビットはビット0です。 set_bit (B'1010101010101010', 6, 0) → 101010001010101010
|
さらに、型ビット
との間で整数値をキャストすることも可能である。 整数をbit(n)
にキャストすると、右端のn
ビットがコピーされます。 整数自体よりも広いビット文字列幅に整数をキャストすると、左側に符号拡張されます。 いくつかの例:
44::bit (10) 0000101100
44::bit (3) 100
キャスト (ビット (12) として-44) 111111010100
'1110'::bit(4)::integer 14
「ビット」のみにキャストすることは、ビット (1)
にキャストすることを意味し、したがって、整数の最下位ビットのみを配信することに留意されたい。