Syn BASIC (オンラインBASICインタプリタ)(3)

このページをスマートフォンなどでご覧になる場合は、画面を横長にする方が読みやすくなる事があります。
目次へ  前のページへ (1) (2) (3) (4) 次のページへ
2021年05月25日 公開。
2021年05月25日 ページ構成の変更により、内容の一部を4ページ目に移動。
2022年11月24日 ページ構成の変更により、以前の2ページの内容の一部をこのページに移動。
2022年12月03日 HEX$関数、OCT$関数、およびSCRSIZE関数の解説を追加。
2023年01月04日 CSRLIN関数とPOS関数の解説を追加。

2-2.Syn BASICで使える関数

Syn BASICで使える関数を、表3に示します。関数名の最後に$が付いている関数(CHR$など)と付いていない関数(SINなど)がありますが、関数名の最後に$が付いている関数は文字列を返す関数で、関数名の最後に$が付いていない関数は数値を返す関数です。

関数には通常1つまたは複数の引数があります。例えばSIN関数には一つの引数がありますが、SIN(X)という具合に、引数(この場合はX)を丸括弧でくくって、関数名の後に書きます。

またLEFT$関数には2つの引数があります。この様に複数の引数がある場合は、LEFT$(A$,3)の様に、引数(この場合はA$3)をカンマで区切って並べます。

TIME$関数の様に引数のない関数も中にはあります。引数のない関数は、TIME$という具合に、丸括弧を使わず表記します。ただし、TIME$()という具合に、後ろに丸括弧を付ける表記法も、Syn BASICでは文法的に許容します。多くのBASICの処理系では、引数のない関数に丸括弧を付ける表記をするとエラーになりますので、他のBASICとの互換性を考えるなら、丸括弧を付けない表記の方が好ましいです。

表3、Syn BASICで使える関数
関数 エイリアス 説明
ABS 絶対値、ぜったいち

数値の引数を取り、その数値の絶対値を返します。

例えば、ABS(12.3)12.3を返します。ABS(-12.3)12.3を返します。

参考:ABSはabsolute value(絶対値という意味)の省略形です。

ASC 文字コード、もじこーど

文字列の引数を取り、その文字列の1文字目の文字コードを返します。

例えば、ASC("a")97を返します。

Syn BASICは、内部で文字列をUTF-16で表現するため、ASC関数が返す文字コードは、UTF-16表現の文字コードです。UTF-16は16ビットの文字コードですので、ASC関数は0~65535(65535は216-1)の範囲の数を返します。

参考:ASCはASCIIの省略形です。MBASICなどの古いBASICでは、ASC関数はUTF-16コードではなくASCIIコードを返していました。半角英数字など、ASCIIコードが128未満の文字については、ASCIIコードもUTF-16コードも同じ数になります。

ATN 逆正接、ぎゃくせいせつ

数値の引数を取り、その数値の逆正接(アークタンジェント)を返します。ATN関数は、角度をラジアン表記した数値を返します。

参考:ATNは、arc tangent(逆正接という意味)の省略形です。

CEIL 天井、てんじょう

数値の引数を取り、その数値以上の最小の整数を返します。(天井関数)

例えば、CEIL(3)3を返します。CEIL(3.2)4を返します。CEIL(-3)-3を返します。CEIL(-3.2)-3を返します。

参考:ceilは「天井を張る」という意味です。ceilingで天井という意味になります。

CHR$ 文字$、もじ$

数値の引数を取り、その数値を文字コードとする文字を返します。(返すのは1文字の文字列)

例えば、CHR$(97)aという文字列を返します。

文字コードの種類はUTF-16なので、引数は0~65535(65535は216-1)の範囲に入っている必要があります。

参考:CHRはcharacter(文字という意味)の省略形です。

CINT 四捨五入、ししゃごにゅう

数値の引数を取り、その数値を四捨五入した整数を返します。

CINT(3.4)3を返します。CINT(3.5)4を返します。CINT(-3.4)-3を返します。CINT(-3.5)-4を返します。

参考:CINTのCはconvert(変換するという意味)の頭文字です。CINTのINTはinteger(整数という意味)の省略形です。

COS 余弦、よげん

数値の引数を取り、その数値の余弦(コサイン)を返します。引数は、ラジアン単位で指定します。

参考:COSはcosine(余弦という意味)の省略形です。

CSRLIN カーソル行、かーそるぎょう

CSRLIN関数には引数はありません。カーソルの垂直位置を返します。

参考:CSRLINは、cursor lineの略です。

DATE$ 日付$、ひづけ$

ローカル時間(ロケールで設定したタイムゾーン)での日付を、年、月、日の順に、各2ケタで表示し、それぞれの間に/を挿入した形式(YY/MM/DD形式)で表した文字列を返します。年については、4桁の西暦の下2桁を表示します。

例えば、2026年1月23日にDATE$関数を呼ぶと、26/01/23という文字列を返します。

この関数に引数はありません。

EXP 指数、しすう

数値の引数を取り、その数値の、ていネイピア数(約2.71828)とする指数関数を返します。

参考:EXPはexponential function(指数関数という意味)の省略形です。

FIX 切り捨て、きりすて

数値の引数を取り、その数値の整数部(小数点以下を切り捨てた数)を返します。

例えば、FIX(3.2)3を返します。FIX(-3.2)は-3を返します。

HEX$ 十六進$、じゅうろくしん$

HEX$関数は、2つの数値の引数を取ります。HEX$関数は第1引数を16進表記した文字列を返しますが、その際、文字列が第2引数で指定した文字数よりも短ければ、文字列の前に0を適切な数だけ挿入し、第2引数で指定した文字数にして返します。第2引数が省略された場合は、第2引数に0を指定されたものとして処理されます。

例えばHEX(123,4)は、007Bという文字列を返します。10進数の123は、16進表記すると7Bになりますが、これは2文字です。第2引数で指定した4文字よりも短いため、7Bの前に0を2つ足して007Bとし、それを文字列として返します。

HEX(123,1)は、7Bという文字列を返します。123を16進表記した7Bは、文字数が第2引数で指定した1文字以上なので、先頭に0を追加する事なく、そのままの文字列を返します。

16進表記の際にA~Fのアルファベットを小文字で表わす流儀と、大文字で表わす流儀がありますが、HEX$関数では大文字を使います。

HEX$関数の第1引数は、0以上の整数である必要があります。第1引数が負の値だと、エラーになります。また、第1引数が整数でなければ、小数点以下を切り捨ててから処理します。

INKEY$ キー入力$、きーにゅうりょく$

キーボードで押されたキーを、一文字の文字列で返します。INKEY$関数には引数はありません。

例えばaのキーが押された場合は、INKEY$aという文字列を返します。

ただし、SHIFTキーが押された状態でaのキーを押した場合や、CAPS LOCKがかかった状態でaのキーを押した場合は、INKEY$Aという文字列を返します。

キーが押されていない場合は、INKEY$は空文字列を返します。

BACK SPACEキーが押された場合は、文字コードが8の文字(CHR$(8))を返します。またENTERキーが押された場合は、文字コードが13の文字(CHR$(13))を返します。

1つのキーを押している間に、何回もINKEY$関数が呼び出された場合は、最初の1回のみ、キーに対応した文字列を返し、2回目以降は空文字列を返します。

INT FLOOR、整数、せいすう、床、ゆか

数値の引数を取り、その数値以下の最大の整数を返します。(床関数)

例えば、INT(3)3を返します。INT(3.2)3を返します。INT(-3)-3を返します。INT(-3.2)-4を返します。

参考:INTはinteger(整数という意味)の省略形です。

LEFT$ 左$、ひだり$

2つの引数を取ります。第1引数は文字列で、第2引数は数値です。第1引数の文字列の左から、第2引数で指定した文字数だけ取り出した文字列を返します。第1引数の文字数が第2引数より短い場合は、第1引数全体を返します。

例えば、LEFT$("abcdefg",3)は、文字列abcdefgの左から3文字を取って、abcを返します。LEFT$("abc",7)は、文字列abcの文字数(3文字)が7文字に満たないので、abcを返します。

参考:leftは左という意味です。

LEN 長さ、ながさ

文字列の引数を取り、その文字列の長さ(文字数)を返します。Syn BASICは、文字列をUTF-16表現で扱うので、漢字などの全角文字も1文字として扱います。(サロゲートペアになる漢字を除く)

例えば、LEN("abcdefg")7を返します。LEN("2個のリンゴ")6を返します。

参考:LENは、length(長さという意味)の省略形です。

LOG 対数、たいすう

数値の引数を取り、その数値の自然対数を返します。

参考:LOGはlogarithm(対数という意味)の省略形です。

MID$ 中$、なか$

2つまたは3つの引数を取ります。第1引数は文字列で、第2引数と(もしあれば)第3引数は数値です。

引数が3つある場合、第1引数の第2引数番目の文字から第3引数で指定した数だけ文字を取り出し、文字列として返します。(部分文字列)

引数が2つの場合は、第1引数の第2引数番目の文字以降の文字列を返します。

例えば、MID$("abcdefg",3,2)は、文字列abcdefgの3番目の文字から2文字を取って、cdを返します。MID$("abcdefg",4)は、文字列abcdefgの4文字目以降を取って、defgを返します。

参考:MIDはmiddle(真ん中という意味)の省略形です。

NOW 今、いま

UTC(協定世界時)での1970年1月1日0時0分0秒から現在までの経過時間をミリ秒単位の整数で返します。

OCT$ 八進$、はっしん$

OCT$関数は、2つの数値引数を取ります。OCT$関数は第1引数を16進表記した文字列を返しますが、その際、文字列が第2引数で指定した文字数よりも短ければ、文字列の前に0を適切な数だけ挿入し、第2引数で指定した文字数にして返します。第2引数が省略された場合は、第2引数に0を指定されたものとして処理されます。

例えばOCT(123,4)は、0173という文字列を返します。10進数の123は、8進表記すると173になりますが、これは3文字です。第2引数で指定した4文字よりも短いため、173の前に0を1つ足して07Bとし、それを文字列として返します。

OCT(123,1)は、173という文字列を返します。123を8進表記した173は、文字数が第2引数で指定した1文字以上なので、先頭に0を追加する事なく、そのままの文字列を返します。

OCT$関数の第1引数は、0以上の整数である必要があります。第1引数が負の値だと、エラーになります。また、第1引数が整数でなければ、小数点以下を切り捨ててから処理します。

POS カーソル桁、かーそるけた

POS関数には引数はありません。カーソルの水平位置を返します。

RIGHT$ 右$、みぎ$

2つの引数を取ります。第1引数は文字列で、第2引数は数値です。第1引数の文字列の右から、第2引数で指定した文字数だけ取り出した文字列を返します。第1引数の文字数が第2引数より短い場合は、第1引数全体を返します。

例えば、RIGHT$("abcdefg",3)は、文字列abcdefgの右から3文字を取って、efgを返します。RIGHT$("abc",7)は、文字列abcの文字数(3文字)が7文字に満たないので、abcを返します。

参考:rightは右という意味です。

RND 乱数、らんすう

0以上1未満の一様乱数を返します。この関数に引数はありません。

SCRSIZE サイズ、さいず

SCRSIZE関数は、WIDTH文で指定した画面のサイズを取得します。

SCRSIZE関数は、数値の引数を1つ取ります。引数には、0、1、2のいずれかの値を指定する必要があります。

SCRSIZE(0)は、物理画面の桁数(=仮想画面の桁数)を返します。例えばWIDTH 80,25,1000を実行した直後にPRINT SCRSIZE(0)を実行すると、80が表示されます。

SCRSIZE(1)は、物理画面の行数を返します。例えばWIDTH 80,25,1000を実行した直後にPRINT SCRSIZE(1)を実行すると、20が表示されます。

SCRSIZE(2)は、仮想画面の行数を返します。例えばWIDTH 80,25,1000を実行した直後にPRINT SCRSIZE(3)を実行すると、1000を返します。

SGN 符号、ふごう

数値の引数を取り、その数値の符号に応じた数を返します。引数が正の数の場合は1を返します。引数が0の場合は0を返します。引数が負の数の場合は-1を返します。

例えば、SGN(3.2)1を返します。SGN(0)0を返します。SGN(-3.2)-1を返します。

参考:SGNはsign(符号という意味)の省略形です。

SIN 正弦、せいげん

数値の引数を取り、その数値の正弦(サイン)を返します。引数は、ラジアン単位で指定します。

参考:SINはsine(正弦という意味)の省略形です。

SQR 平方根、へいほうこん

数値の引数を取り、その数値の平方根の内、負でない数を返します。

例えば、SQR(9)3を返します。

注:「9の平方根」は2乗して9になる数のを意味するので、3と-3の2つがあります。SQR(9)は、9の2つの平方根の内、負でない方の3を返します。Pascalなど、2乗する関数をSQR関数とし、負でない平方根を返す関数をSQRT関数としているプログラム言語があるので、混同しないでください。

参考:SQRは、square root(平方根)の省略形です。squareだけだと2乗という意味になります。

STR$ 文字列$、もじれつ$

数値の引数を取り、その数値を表現する文字列を返します。STR$(2.3)2.3という文字列を返します。

参考:STRはstring(文字列という意味)の省略形です。

TAN 正接、せいせつ

数値の引数を取り、その数値の正接(タンジェント)を返します。引数は、ラジアン単位で指定します。

参考:TANはtangent(正接という意味)の省略形です。

TIME$ 時刻$、じこく$

ローカル時間(ロケールで設定したタイムゾーン)での時刻を、時、分、秒の順に、各2ケタで表示し、それぞれの間に:を挿入した形式(HH:MM:SS形式)で表した文字列を返します。この関数に引数はありません。

例えば、21時15分7秒にDATE$関数を呼ぶと、21:15:07という文字列を返します。

VAL 数値、すうち

文字列の引数を取り、その文字列を数値として解釈した場合の数値を返します。

引数の中のスペースは全て無視します。また、引数が数値として解釈できない文字列の場合は0を返します。引数が途中まで数値として解釈できて、途中から数値として解釈できなくなる場合は、最初の数値として解釈できる部分のみを数値化して返します。

例えば、VAL("-2.5")は-2.5を返します。VAL(" - 2  . 5 ")も-2.5を返します。(文字列中のスペースを無視するため) VAL("-2.5abc012")も-2.5を返します。(abcは数値として解釈できないので、それ以降は無視される)

参考:VALはvalue(値)の省略形です。

2-3.Syn BASICで使える演算子

この節では、Syn BASICで使える演算子について説明します。

2-3-1.用語の説明

数式の中には、色々な演算(四則演算など)を表す記号が出てきます。例えば、5+2-3という数式には、加算を表す+と、減算を表す-の、2つの記号が出てきます。これらの記号を演算子といいます。

Syn BASICの演算子には単項演算子2項演算子があります。

参考:Syn BASICには3項演算子はありません。

単項演算子は、数値や文字列の前に置いて使う演算子です。-5における-が単項演算子の例です。

2項演算子は、2つの数値あるいは2つの文字列の間に置いて使う演算子です。1-2における-や、"abc"+"def"における+は、演算子の例です。

単項演算子の後に書く数値や文字列、あるいは2項演算子の前後に書く数値や文字列の事をオペランドといいます。-5における5"abc"+"def"における"abc""def"は、オペランドの例です。

2-3-2.演算子の一覧

表4に、Syn BASICで使える演算子の一覧を示します。

表4、Syn BASICで使える演算子
演算子 説明
+

この演算子は、単項演算子としての使い方と2項演算子としての使い方の2種類があります。

単項演算子として+を使う場合は、+の直後に数値を書き、演算結果は+の直後の数値と同じ値になります。例えば+55と同じです。

2項演算子として+を使う場合は、2つの数値の間に+を書く場合と、2つの文字列の間に+を書く場合で意味が異なります。

2つの数値の間に+を書く場合は、2つの数の和を意味します。例えば5+3は、演算結果は5と3の和、すなわち8となります。

2つの文字列の間に+を書く場合は、それらの文字列を連結する演算を意味します。例えば"abc"+"def"の演算結果は、abcdefという文字列になります。

-

この演算子は、単項演算子としての使い方と2項演算子としての使い方の2種類があります。

単項演算子として-を使う場合は、-の直後に数値を書き、演算結果は-の直後の数値に-1を掛けた値(正負の符号を反転させた値)になります。例えば-Aなら、演算結果は変数Aの値の正負の符号を反転させた値になります。

2項演算子として-を使う場合は、2つの数値の間に-を書きます。この場合の演算結果は、前の数値から後ろの数値を引いた値になります。例えば7-2なら、演算結果は、7と2の差、すなわち5になります。

*

この演算子は、2項演算子で、2つの数値の間に置いて使います。演算結果は、2つの数値の積になります。

例えば、5*3の演算結果は、5と3の積の15になります。

/

この演算子は、2項演算子で、2つの数値の間に置いて使います。演算結果は、前の数値を後の数値で割った値になります。後の数値が0の場合はエラーになります。

例えば、5/2の演算結果は、5を2で割った値、すなわち2.5になります。

÷

この演算子は、/の演算子のエイリアスです。演算子の前の数値を演算子の後の数値で割った値が演算結果になります。後の数値が0の場合はエラーになります。

例えば、5÷2の演算結果は、5を2で割った値、すなわち2.5になります。

^

べき乗演算子です。A^Bの演算結果は、AのB乗になります。

べき乗演算子は左結合ですので、A^B^C(A^B)^Cと解釈されます。

注:一部のプログラム言語では、べき乗演算子が右結合として実装されているので、注意が必要です。

例えば、3^2の演算結果は、3の2乗、すなわち9になります。

MOD

剰余演算子です。A MOD Bの演算結果は、AをBで割った余りになります。

A MOD BはAの小数点以下を四捨五入した数を、Bの絶対値の小数点以下を四捨五入した数で割り、その余りを返します。Aが負の数の場合は、A MOD Bも負の数になります。Bが0の場合はエラーになります。

例えば、11 MOD 3の演算結果は、10を3で割った余り、すなわち2になります。-11 MOD 3の演算結果は、-2になります。11 MOD -3の演算結果は2になります。-11 MOD -3の演算結果は-2となります。

=

2つの数値の間、または2つの文字列の間に置いて使います。この演算子の演算結果は、演算子の両側の数値または文字列が一致する場合に-1、一致しない場合に0になります。

例えば、5=5-1になります。5=30になります。"ABC"="ABC"-1になります。"ABC"="abc"0になります。

<>

2つの数値の間、または2つの文字列の間に置いて使います。この演算子の演算結果は、演算子の両側の数値または文字列が一致する場合に0、一致しない場合に-になります。

例えば、5<>50になります。5<>3-1になります。"ABC"<>"ABC"0になります。"ABC"<>"abc"-1になります。

<

2つの数値の間、または2つの文字列の間に置いて使います。

2つの数値の間に置いて使う場合は、前の数値が後の数値より小さい場合に、演算結果が-1になり、それ以外の場合に演算結果が0になります。

2つの文字列の間に置いて使う場合は、前の文字列の方が後の文字列より辞書順で前方にあれば演算結果が-1になり、それ以外の場合に演算結果が0になります。

例えば、5<30になります。5<50になります。5<7-1になります。"ABC"<"AAA"0になります。"ABC"<"ABC"0になります。"ABC"<"ABCD"-1になります。

<=

2つの数値の間、または2つの文字列の間に置いて使います。

2つの数値の間に置いて使う場合は、前の数値が後の数値より小さいか、前の数値と後の数値が等しい場合に、演算結果が-1になり、それ以外の場合に演算結果が0になります。

2つの文字列の間に置いて使う場合は、前の文字列の方が後の文字列より辞書順で前方にあるか、前の文字列と後ろの文字列が等しい場合に演算結果が-1になり、それ以外の場合に演算結果が0になります。

例えば、5<=30になります。5<=5-1になります。5<=7-1になります。"ABC"<="AAA"0になります。"ABC"<="ABC"-1になります。"ABC"<="ABCD"-1になります。

>

2つの数値の間、または2つの文字列の間に置いて使います。

2つの数値の間に置いて使う場合は、前の数値が後の数値より大きい場合に、演算結果が-1になり、それ以外の場合に演算結果が0になります。

2つの文字列の間に置いて使う場合は、前の文字列の方が後の文字列より辞書順で後方にあれば演算結果が-1になり、それ以外の場合に演算結果が0になります。

例えば、5>3-1になります。5>50になります。5>70になります。"ABC">"AAA"-1になります。"ABC">"ABC"0になります。"ABC">"ABCD"0になります。

>=

2つの数値の間、または2つの文字列の間に置いて使います。

2つの数値の間に置いて使う場合は、前の数値が後の数値より大きいか、前の数値と後の数値が等しい場合に、演算結果が-1になり、それ以外の場合に演算結果が0になります。

2つの文字列の間に置いて使う場合は、前の文字列の方が後の文字列より辞書順で後方にあるか、前の文字列と後ろの文字列が等しい場合に演算結果が-1になり、それ以外の場合に演算結果が0になります。

例えば、5>=3-1になります。5>=5-1になります。5>=70になります。"ABC">="AAA"-1になります。"ABC">="ABC"-1になります。"ABC">="ABCD"0になります。

NOT

論理否定演算子です。単項演算子で、数値の前に置いて使います。

NOT演算子は、まず後続の数値を符号付き32ビット整数に変換します。その後で、32ビットのそれぞれの論理否定を取り、得られた数が演算結果になります。

つまり、NOT演算子は後続の数値の1の補数を返します。

例えば、NOT 0-1になります。NOT 3-4になります。NOT -32になります。

参考:0と-1をそれぞれ符号付き4ビットの2進数(2の補数表現)で表記すると00001111になります。また3と-4をそれぞれ符号付き4ビットの2進数(2の補数表現)で表記すると、00111100となります。また-3と2をそれぞれ符号付き4ビットの2進数(2の補数表現)で表記すると、11010010となります。

AND

論理積演算子です。2項演算子で、2つの数値の間に置いて使います。

AND演算子は、まず2つのオペランドを符号付き32ビット整数に変換します。その後で、32ビットのそれぞれのビットにおいて論理積を取り、得られた結果を演算結果とします。

例えば、10 AND 32になります。

参考:10、3、2を4桁の2進数で表記すると、それぞれ101000110010となります。

OR

論理和演算子です。2項演算子で、2つの数値の間に置いて使います。

OR演算子は、まず2つのオペランドを符号付き32ビット整数に変換します。その後で、32ビットのそれぞれのビットにおいて論理和を取り、得られた結果を演算結果とします。

例えば、10 OR 311になります。

参考:10、3、11を4桁の2進数で表記すると、それぞれ101000111011となります。

XOR

排他的論理和演算子です。2項演算子で、2つの数値の間に置いて使います。

XOR演算子は、まず2つのオペランドを符号付き32ビット整数に変換します。その後で、32ビットのそれぞれのビットにおいて排他的論理和を取り、得られた結果を演算結果とします。

例えば、10 XOR 39になります。

参考:10、3、9を4桁の2進数で表記すると、それぞれ101000111001となります。

IMP

論理包含演算子です。2項演算子で、2つの数値の間に置いて使います。論理学では論理包含演算子にを使いますが、Syn BASICでは IMPを使います。

論理包含とは、0→0=1、0→1=1、1→0=0、1→1=1で定義される論理演算です。

IMP演算子は、まず2つのオペランドを符号付き32ビット整数に変換します。その後で、32ビットのそれぞれのビットにおいて論理包含を取り、得られた結果を演算結果とします。

例えば、10 IMP 3-9になります。

参考:10、3、-9を8桁の符号付き2進数(2の補数表現)で表記すると、それぞれ000010100000001111110111となります。

EQV

論理同値演算子です。2項演算子で、2つの数値の間に置いて使います。論理学では論理包含演算子にを使いますが、Syn BASICでは EQVを使います。

論理同値とは、0⇔0=1、0⇔1=0、1⇔0=0、1⇔1=1で定義される論理演算です。すなわち、2つのオペランドが等しい時に1、等しくない時に0を返します。否定排他的論理和(XNOR)とも呼ばれます。

EQV演算子は、まず2つのオペランドを符号付き32ビット整数に変換します。その後で、32ビットのそれぞれのビットにおいて論理同値を取り、得られた結果を演算結果とします。

例えば、10 EQV 3-10になります。

参考:10、3、-10を8桁の符号付き2進数(2の補数表現)で表記すると、それぞれ000010100000001111110110となります。

2-3-3.ビット演算子のオペランドの32ビット整数化

NOT、AND、OR、XOR、IMP、EQVの6種の演算子を、ビット演算子と呼びます。

ビット演算子は、数値(倍精度浮動小数点)をオペランドに取りますが、演算する際には、まず、オペランドを符号付き32ビット整数に変換してから演算を行ないます。

オペランド(倍精度浮動小数点)を符号付き32ビット整数にする際に、まず数値を0に近い方に丸めて整数化します。そして、その整数化した数値を2進数で表した時に、桁数(ビット数)が32ビットを超えていた場合には、下位32ビットを取り出して演算の対象にします。(32ビット以内の場合は、そのまま演算の対象にします)

例として、NOT 12345678901.23を計算する場合について考えます。オペランドを0に近い方に丸めると12345678901となります。これを2進数で表記すると、10 1101 1111 1101 1100 0001 1100 0011 0101と、34ビットの数になります。(ビット数が多いので、分かりやすい様に4ビットごとにスペースを入れています) この数は32ビットを超えていますので、下位32ビットを取ると1101 1111 1101 1100 0001 1100 0011 0101が得られます。

上記のような操作で得られた32ビットの数がNOT演算(論理否定演算)の対象になります。先程の数の各ビットをそれぞれ論理否定すると、0010 0000 0010 0011 1110 0011 1100 1010が得られます。この数を符号付き32ビット整数とみなして10進数表現すると、演算結果の539222986が得られます。

この様にして、NOT 12345678901.23が539222986と計算されます。

2-3-4.演算子の優先順位

1+2*3という式は、加算を表す演算子+よりも乗算を表す演算子*の方が優先されて計算されますので、1+2*3=1*6=7と計算されます。この様に、演算子には優先順位が決まっており、優先順位の高い演算子から順に計算が進みます。

表5に、演算子の優先順位を示します。

優先順位の低い演算子の計算を先にしたい場合は、先に計算したい部分を丸括弧で括ります。例えば、1+2と3の積を計算したい場合は、(1+2)*3と記述します。

表5、Syn BASICの演算子の優先順位
優先順位 演算子 演算子の種類
1 ^ べき演算子
2 +、- 符号(単項演算子)
3 *、/、÷ 乗算演算子、除算演算子
4 MOD 剰余
5 +、- 加算、減算(2項演算子)
6 =、<>、<、>、<=、>= 関係演算子
7 NOT 論理否定演算子
8 AND 論理積演算子
9 OR 論理和演算子
10 XOR 排他的論理和演算子
11 IMP 論理包含演算子
12 EQV 論理同値演算子

次のページでは、Syn BASICの画面やキーボードについて説明します。

目次へ  前のページへ (1) (2) (3) (4) 次のページへ

このページで使われている用語の解説

関連ページ

PCBgogoのバナー
Arduino 電子工作
このサイトの記事が本になりました
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
電子工作で学ぶ論理回路入門
このサイトの中の人が書いた本です。
ISBN:978-4-7775-2280-4
工学社の書籍の内容の紹介ページ
この本の紹介記事
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。