$FACTOR (ObjectScript)
整数を $BIT ビット文字列に変換します。
構文
$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 関数で使用されるビット文字列に対応しています。
引数
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"