第15章Caché関数コレクション$ FACTOR関数

記事ディレクトリ

第15章Caché関数コレクション$ FACTOR関数

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

概要

$FACTOR(num,scale)

パラメータ

  • num計算結果は数値式です。numは、ビット文字列変換の前に正の整数に変換されます。負の数は正の数(その絶対値)に変換されます。小数は整数に丸められます。
  • scaleオプションの整数。整数の10進数の累乗(指数表記)の乗数として使用されます。デフォルト値は0です。

解説

$FACTOR指定された整数のバイナリ表現に対応する$BITフォーマットビット文字列を返します次のことを行います。

  • 負の数が指定された$FACTOR場合、その数の絶対値が使用されます。
  • 小数点以下の桁数を指定する場合は、$FACTOR整数に10 **の小数点以下の桁数を掛けます。
  • 10進数を指定$FACTORすると、整数に丸められます。丸めの際、Cachéは10進数の.5を次に大きい整数に丸めます。
  • $FACTOR整数をそのバイナリ表現に変換します。
  • $FACTORこの2進数を$BITエンコードされたバイナリ形式に変換します。

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

パラメータ

一つに

数値(または計算結果が数値である式)。$factorScaleパラメーター(指定されている場合)を適用し、この数値を四捨五入して整数に変換してから、対応するビット文字列を返します。数値は正でも負でもかまいません。numが混合数値文字列(たとえば、 " 7wwarves"または " 5.6.8")の場合、非数値文字が検出されるまで$factor文字列のデジタル部分を変換します(この例7とのように5.6)。numがゼロ、ゼロに丸められた、空の文字列(“”)、または数値以外の文字列の場合、$factor空の文字列返されます。$DOUBLEINF-INFおよびNaN空の文字列を返します。

規模

Numに適用される指数表記の指数を指定する整数。たとえば、比率が2の場合、比率は2または100の10の指数を表します。スケール値はNumで乗算されます。たとえば$factor(7,2)、整数700に対応するビット文字列を返します。この乗算は、numを整数に丸める前に行われます。デフォルトでは、スケールは0です。

次の例は、整数1から9へのビット文字列への変換を示しています。

/// d ##class(PHA.TEST.Function).FACTOR()
ClassMethod FACTOR()
{
    
    
	SET x=1
	WHILE x<10 {
    
    
	WRITE !,x,"="
		FOR i=1:1:8 {
    
    
			WRITE $BIT($FACTOR(x),i) 
		}
		SET x=x+1 
	}
}
DHC-APP>d ##class(PHA.TEST.Function).FACTOR()
 
1=10000000
2=01000000
3=11000000
4=00100000
5=10100000
6=01100000
7=11100000
8=00010000
9=10010000

次の例は$FACTOR、負の数と小数の正の整数への変換を示しています。

/// d ##class(PHA.TEST.Function).FACTOR1()
ClassMethod FACTOR1()
{
    
    
	FOR i=1:1:8 {
    
    WRITE $BIT($FACTOR(17),i)}
	WRITE " 正整数",!
	FOR i=1:1:8 {
    
    WRITE $BIT($FACTOR(-17),i)}
	WRITE " 负整数 (绝对值)",!
	FOR i=1:1:8 {
    
    WRITE $BIT($FACTOR(16.5),i)}
	WRITE " 正小数(四舍五入)",!
	FOR i=1:1:8 {
    
    WRITE $BIT($FACTOR(-16.5),i)}
	WRITE " 负小数(四舍五入)",!
	FOR i=1:1:8 {
    
    WRITE $BIT($FACTOR(-16.4),i)}
	WRITE " 负小数(四舍五入)"
}
DHC-APP>d ##class(PHA.TEST.Function).FACTOR1()
10001000 正整数
10001000 负整数 (绝对值)
10001000 正小数(四舍五入)
10001000 负小数(四舍五入)
00001000 负小数(四舍五入)

次の例は、scaleパラメータが指定されたときに返されるビット文字列を示しています。

/// d ##class(PHA.TEST.Function).FACTOR2()
ClassMethod FACTOR2()
{
    
    
	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"
}
DHC-APP>d ##class(PHA.TEST.Function).FACTOR2()
 
2.7 scaled then rounded to an integer:
 
110000000000 binary = 3 decimal
110110000000 binary = 27 decimal
011100001000 binary = 270 decimal

おすすめ

転載: blog.csdn.net/yaoxin521123/article/details/108417182