バージョンごとのドキュメント一覧

9.6. ビット文字列関数と演算子 #

<title>Bit String Functions and Operators</title>

This section describes functions and operators for examining and manipulating bit strings, that is values of the types <type>bit</type> and <type>bit varying</type>. (While only type <type>bit</type> is mentioned in these tables, values of type <type>bit varying</type> can be used interchangeably.) Bit strings support the usual comparison operators shown in <xref linkend="functions-comparison-op-table"/>, as well as the operators shown in <xref linkend="functions-bit-string-op-table"/>. 本節ではbit型とbit varying型の値であるビット文字列を調べたり操作するための関数と演算子について説明します。 (この表ではbit型だけが言及されていますが、bit varying型も同じように使用できます。) ビット文字列は表 9.1で示す通常の比較演算子および表 9.14で言及している演算子もサポートします。

表9.14 ビット文字列演算子

<title>Bit String Operators</title>

Operator 演算子

Description 説明

Example(s)

bit || bitbit

Concatenation 結合

B'10001' || B'011'10001011

bit & bitbit

Bitwise AND (inputs must be of equal length) ビット単位のAND(入力は同じ長さでなければなりません)

B'10001' & B'01101'00001

bit | bitbit

Bitwise OR (inputs must be of equal length) ビット単位のOR(入力は同じ長さでなければなりません)

B'10001' | B'01101'11101

bit # bitbit

Bitwise exclusive OR (inputs must be of equal length) ビット単位の排他的論理和(入力は同じ長さでなければなりません)

B'10001' # B'01101'11100

~ bitbit

Bitwise NOT ビット単位の否定

~ B'10001'01110

bit << integerbit

Bitwise shift left (string length is preserved) ビット単位の左シフト(文字列長は保存されます)

B'10001' << 301000

bit >> integerbit

Bitwise shift right (string length is preserved) ビット単位の右シフト(文字列長は保存されます)

B'10001' >> 200100


Some of the functions available for binary strings are also available for bit strings, as shown in <xref linkend="functions-bit-string-table"/>. バイナリ文字列で利用可能な関数のいくつかは、表 9.15で示すようにビット文字列でも利用可能です。

表9.15 ビット文字列関数

<title>Bit String Functions</title>

Function 関数

Description 説明

Example(s)

bit_count ( bit ) → bigint

Returns the number of bits set in the bit string (also known as <quote>popcount</quote>). ビット文字列中のセットされているビットの数を返します(popcountとしても知られています)。

bit_count(B'10111')4

bit_length ( bit ) → integer

Returns number of bits in the bit string. ビット文字列中のビット数を返します。

bit_length(B'10111')5

length ( bit ) → integer

Returns number of bits in the bit string. ビット文字列中のビット数を返します。

length(B'10111')5

octet_length ( bit ) → integer

Returns number of bytes in the bit string. ビット文字列中のバイト数を返します。

octet_length(B'1011111011')2

overlay ( bits bit PLACING newsubstring bit FROM start integer [ FOR count integer ] ) → bit

Replaces the substring of <parameter>bits</parameter> that starts at the <parameter>start</parameter>'th bit and extends for <parameter>count</parameter> bits with <parameter>newsubstring</parameter>. If <parameter>count</parameter> is omitted, it defaults to the length of <parameter>newsubstring</parameter>. bitsstart番目のビットからcountビットをnewsubstringで置き換えます。 countを省略するとnewsubstringの長さがデフォルトになります。

overlay(B'01010101010101010' placing B'11111' from 2 for 3)0111110101010101010

position ( substring bit IN bits bit ) → integer

Returns first starting index of the specified <parameter>substring</parameter> within <parameter>bits</parameter>, or zero if it's not present. bits中のsubstringで指定する最初の文字列開始位置を返します。その文字列が存在しなければ0を返します。

position(B'010' in B'000001101011')8

substring ( bits bit [ FROM start integer ] [ FOR count integer ] ) → bit

Extracts the substring of <parameter>bits</parameter> starting at the <parameter>start</parameter>'th bit if that is specified, and stopping after <parameter>count</parameter> bits if that is specified. Provide at least one of <parameter>start</parameter> and <parameter>count</parameter>. start番目の文字で始まるbitsの部分文字列を取り出します。 countが指定されていればcount数ビットを取り出します。 少なくともstartcountのどちらかを指定してください。

substring(B'110010111111' from 3 for 2)00

get_bit ( bits bit, n integer ) → integer

Extracts <parameter>n</parameter>'th bit from bit string; the first (leftmost) bit is bit 0. ビット文字列のn番目のビットを取り出します。文字列の最初(一番左)のビットを0として数えます。

get_bit(B'101010101010101010', 6)1

set_bit ( bits bit, n integer, newvalue integer ) → bit

Sets <parameter>n</parameter>'th bit in bit string to <parameter>newvalue</parameter>; the first (leftmost) bit is bit 0. ビット文字列のn番目のビットをnewvalueにします。文字列の最初(一番左)のビットを0として数えます。

set_bit(B'101010101010101010', 6, 0)101010001010101010


In addition, it is possible to cast integral values to and from type <type>bit</type>. Casting an integer to <type>bit(n)</type> copies the rightmost <literal>n</literal> bits. Casting an integer to a bit string width wider than the integer itself will sign-extend on the left. Some examples: さらに、bit型から整数値にキャストすることも整数からbit型にキャストすることも可能です。 整数からbit(n)にキャストすると最右端のnビットがコピーされます。 その整数より文字列幅が広いビットにキャストすると左のビットが符号拡張されます。 以下に例を示します。

44::bit(10)                    0000101100
44::bit(3)                     100
cast(-44 as bit(12))           111111010100
'1110'::bit(4)::integer        14

Note that casting to just <quote>bit</quote> means casting to <literal>bit(1)</literal>, and so will deliver only the least significant bit of the integer. 単にbitにキャストすることはbit(1)にキャストすることを意味することに注意してください。つまり、単に整数の最下位ビットのみが渡されることになります。