Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

$BITFIND (ObjectScript)

ビット文字列内の指定されたビット値の位置を返します。

Synopsis

$BITFIND(bitstring,bitvalue,position,direction)

引数

引数 説明
bitstring ビット文字列として評価される式。bitstring が未定義の変数の場合、$BITFIND は 0 を返します。
bitvalue ビット文字列内を検索する値 (0 または 1)。
position

オプション — 検索が開始されるビット位置。正の整数で指定されます。検索方向が順方向でも逆方向でも、ビット位置はビット文字列の先頭を起点に 1 からカウントされます。検索はこの位置から開始します。

順方向に検索 (direction = 1 または未指定のまま) するときに、指定された位置がない場合、または位置の値が 0 の場合は、位置 1 が指定されているものと見なされます。

逆方向に検索 (direction = -1) するときに、指定された位置がない場合、または位置の値が 0 の場合は、ビット文字列の最後の位置が指定されているものと見なされます。

direction

オプション — 方向フラグ。使用可能な値は 1 と -1 です。

  • 1 を指定すると、ビット文字列の先頭 (または position で指定された位置) から順方向 (左から右) に検索されます (既定の方向)。

  • -1 はビット文字列の最後 (または position) から逆方向に検索します。

概要

$BITFIND(bitstring,bitvalue) は、ビット文字列 bitstring の中を左から右へ検索し、指定された bitvalue (0 または 1) が最初に見つかった位置を返します。ビット位置は、ビット文字列の先頭を起点に、1 からカウントされます。

$BITFIND(bitstring,bitvalue,position) は、bitstringposition 以降の部分で、指定された bitvalue が最初に見つかった位置を返します。

$BITFIND(bitstring,bitvalue,position,direction) は、ビット文字列の中を検索する方向を指定します。direction = 1 を指定するか、何も指定しないと、$BITFIND による検索方向は順方向 (左から右) になります。direction = -1 を指定すると、$BITFIND による検索方向は逆方向 (右から左) になります。検索が順方向か逆方向かに関係なく、ビット位置はビット文字列の先頭を起点に 1 からカウントされます。

希望のビット値が見つからない場合、または position がビット文字列内のビット数よりも大きい場合は、0 の値を返します。指定された bitstring が未定義の変数である場合、返り値は 0 です。指定された bitstring が有効なビット文字列ではない場合、<INVALID BIT STRING> エラーが発行されます。

"ビット文字列関数の概要" も参照してください。

20 個の 1 と 0 で構成するビット文字列を作成します。

set bitvalues = "00110001101010000111"
for i = 1:1:$length(bitvalues) { set $bit(bitstring,i) = $extract(bitvalues,i)}

値が 0 である最初のビット位置と値が 1 である最初のビット位置を返します。position または direction の値を指定しないと、$BITFIND による検索は位置 1 から始まります。

write $BITFIND(bitstring,0) // returns 1
write $BITFIND(bitstring,1) // returns 3

位置 5 以降の範囲で、値が 0 である最初のビット位置と値が 1 である最初のビット位置を返します。$BITFIND は位置 5 以降の範囲を検索します。

set position = 5
write $BITFIND(bitstring,0,position) // returns 5
write $BITFIND(bitstring,1,position) // returns 8

位置 5 以降の範囲で、値が 0 である最初のビット位置と値が 1 である最初のビット位置を返します。backward 引数には -1 を指定します。$BITFIND は、位置 5 から逆方向に右から左へ検索を進めます。

write $BITFIND(bitstring,0,position,-1) // returns 5
write $BITFIND(bitstring,1,position,-1) // returns 4

ビット文字列の範囲外を検索の開始位置として、値が 1 である最初のビット位置を返します。

write $BITFIND(bitstring,1,-100) // Search from -100 forward: returns 3
write $BITFIND(bitstring,1,-100,-1) // Search from -100 backward: returns 0
write $BITFIND(bitstring,1,100) // Search from 100 foward: returns 0
write $BITFIND(bitstring,1,100,-1) // Search from 100 backward: returns 20

ビット文字列の中で値が 0 であるすべてのビット位置と値が 1 であるすべてのビット位置を返します。

  set position = 0
  write !,"Bit positions with value 1: "
  for { set position=$BITFIND(bitstring,1,position+1) quit:'position  write position,", " }
  write !,"Bit positions with value 0: "
  for { set position=$BITFIND(bitstring,0,position+1) quit:'position  write position,", " }

関連項目

FeedbackOpens in a new tab