Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$FACTOR

整数を $BIT ビット文字列に変換します。

Synopsis

$FACTOR(num,scale)

パラメータ

num 数字として評価される式。num は、正の整数に変換されてから、ビット文字列に変換されます。負の整数は、正の整数 (その絶対値) に変換されます。小数点以下を持つ数値は整数に丸められます。
scale オプションnum に対する 10 のべき乗指数 (科学的記数法) として使用する整数。既定は 0 です。

概要

$FACTOR は、指定された整数の 2 進数表記に対応する $BIT 形式のビット文字列を返します。これは、以下の操作を実行します。

  • 負の数を指定すると、$FACTOR はその数の絶対値を取ります。

  • scale を指定すると、$FACTOR は整数を 10**scale で乗算します。

  • 小数を指定すると、$FACTOR はこの数を整数に丸めます。数を丸めるときは、四捨五入が使用され小数の .5 は次に高い整数になります。

  • $FACTOR は整数を、その 2 進数表記に変換します。

  • $FACTOR はこの 2 進数を、$BIT でエンコードされたバイナリ形式に変換します。

返されたバイナリ文字列は、位置 1 の最下位ビットを起点としてビット位置を指定します (位置 1 を 1 とします)。これは、さまざまな $BIT 関数で使用されるビット文字列に対応しています。

パラメータ

num

数 (または数に評価する式)。$FACTORscale パラメータを適用し (指定されている場合)、この数を四捨五入によって整数に変換してから、対応するビット文字列を返します。num は正の数でも負の数でもかまいません。num が混合数値文字列 (“7dwarves” または “5.6.8” など) の場合、$FACTOR は、非数値文字が検出されるまで文字列の数値部分 (7 および 5.6) を変換します。num がゼロの場合、ゼロに丸められた場合、NULL 文字列 ("") の場合、または非数値文字列の場合、$FACTOR は空の文字列を返します。$DOUBLE の INF 値、–INF、および NAN は空の文字列を返します。

scale

num に適用する、科学的記数法のべき乗指数を指定する整数。例えば、scale が 2 の場合、scale は 10 の 2 乗、つまり 100 を表し、この scale 値と num が乗算されます。例えば、$FACTOR(7,2) は整数 700 に対応するビット文字列を返します。この乗算は、num を整数に丸める前に実行されます。既定では、scale は 0 です。

以下は、整数の 1 から 9 までをビット文字列に変換する例です。

   SET x=1
   WHILE x<10 {
   WRITE !,x,"="
   FOR i=1:1:8 {
     WRITE $BIT($FACTOR(x),i) }
   SET x=x+1 }

以下は、負の数と小数の正の整数への $FACTOR 変換の例です。

  FOR i=1:1:8 {WRITE $BIT($FACTOR(17),i)}
  WRITE " Positive integer",!
  FOR i=1:1:8 {WRITE $BIT($FACTOR(-17),i)}
  WRITE " Negative integer (absolute value)",!
  FOR i=1:1:8 {WRITE $BIT($FACTOR(16.5),i)}
  WRITE " Positive fraction (rounded up)",!
  FOR i=1:1:8 {WRITE $BIT($FACTOR(-16.5),i)}
  WRITE " Negative fraction (rounded up)"

以下は、scale パラメータが指定された場合に返されるビット文字列の例です。

 SET x=2.7
   WRITE !,x," scaled then rounded to an integer:",!!
   FOR i=1:1:12 {
     WRITE $BIT($FACTOR(x),i) }
   WRITE " binary = ",$NORMALIZE(x,0)," decimal",!
 SET scale=1
   SET y=x*(10**scale)
   FOR i=1:1:12 {
     WRITE $BIT($FACTOR(x,scale),i) }
   WRITE " binary = ",$NORMALIZE(y,0)," decimal",!
 SET scale=2
   SET y=x*(10**scale)
   FOR i=1:1:12 {
     WRITE $BIT($FACTOR(x,scale),i) }
   WRITE " binary = ",$NORMALIZE(y,0)," decimal"

関連項目

FeedbackOpens in a new tab