Warning : Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3
Warning : "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297
Warning : Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660
Warning : session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834
Warning : ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126
Warning : ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127
Warning : session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133
Warning : session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140
Warning : "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
http:///mymemo.xyz/wiki/api.php?action=feedcontributions&user=1.115.3.138&feedformat=atom
miniwiki - 利用者の投稿記録 [ja]
2024-05-05T16:51:37Z
利用者の投稿記録
MediaWiki 1.31.0
演算子
2017-06-10T09:05:32Z
<p>1.115.3.138: /* 形式的分類 */</p>
<hr />
<div>{{otheruseslist|[[数式]]・{{仮リンク|文 (論理学)|en|Sentence (mathematical logic)|label=文}}の一要素となる記号|解析学における演算子|作用素|微積分演算の記号的処理|演算子法|物理学における演算子|演算子 (物理学)}}<br />
{{出典の明記|date=2009年6月}}<br />
'''演算子'''(えんざんし、{{lang-en-short|''operator symbol'', ''operator name''}})は、[[数式]]やコンピュータ[[プログラミング言語]]などで、各種の'''[[演算]]'''を表わす[[記号]]・[[シンボル]]である。普通は、演算子は単なる記号ないし記号列であって[[構文論]]的なものであり、それに対応する演算は[[意味論]]の側にある。たとえば[[Java]]において、演算子 <code>+</code> を使った <code>a + b</code> という式は、構文論上は単にそういう式だというだけである。意味論的には数値の加算であったり、文字列の連結であったりするが、それは a と b の型に依って決まる(理論的には[[項書き換え]]のように、構文論的に意味論も与えられた演算子といったものもある)。<br />
<br />
演算が作用する対象のことを'''[[被演算子]]'''({{lang|en|''operand''}}; オペランド、被演算数、[[引数]])という。たとえば、''n'' と 3 との[[加法|和]]を表す式 "''n'' + 3" において、"+" は演算子であり、その被演算子は "''n''" と "3" である。また、数式として一般的な被演算子と被演算子の間に演算子を記述する構文は[[中置記法]]と呼ばれる。<br />
<br />
[[数学]]的には、基本的には、[[関数 (数学)|関数]](単項演算子では1引数の関数、2項演算子は2引数の関数)をあらわすある種の[[糖衣構文]]のようなものに過ぎない。しかし、[[汎函数計算]]など、演算子を操作するような手法もある。<br />
<br />
== 形式的分類 ==<br />
{{seealso|アリティ}}<br />
=== 単項演算子 ===<br />
{{see also|単項演算}}<br />
'''単項演算子'''({{lang-en-short|unary operator}})とは、被演算子が一つだけの演算を表す演算子。その記法には、通常は被演算子の前に単項演算子を置く[[前置記法]](ポーランド記法)を用い、被演算子を明示するための括弧 "( )" を伴うことも多い。<br />
<br />
代表的な単項演算子として、[[平方根]]を表す[[根号]] "&radic;<span style="texr-decoration:overline">&nbsp;</span>" がある<ref>次数を[[添字記法|添字]]とし、一般の[[冪根]]を表す場合の根号は二項演算子である。</ref>。負を表す(減算ではない)[[マイナス記号|負符号]]もそうである(例 : "&minus;3")。通常は省略されるものの、[[プラス記号|正符号]]も単項演算子として書くことがある(例 : "+0")。[[階乗]]を表す[[感嘆符]](例:"''n''!")も単項演算子であり、これは例外的に[[後置記法]]で書く。[[絶対値]]を表す2本の[[縦線]]も単項演算子である(例 : |''x''|)。<br />
<br />
[[関数 (数学)|関数]] ''f''(''x'') の "''f''( )" も単項演算子であり、符牒となる文字列 "''f''" を'''関数子'''などと呼ぶ場合もある。関数子としては任意の文字列を使用することができ、代表的なものとして[[三角関数]] "sin", "cos", "tan" などが挙げられる。微分作用素の "''d''/''dx''" または "''D''" や、差分作用素 "&Delta;" も単項演算子である。関数に「&prime;」も微分作用素である。例えば''f''(''x'')の微分を''f''&prime;(''x'')と表せる。 また、定数 ''a'' を与えるごとに(''a'' が代入可能である限りにおいて)[[対数関数]] log<sub>''a''</sub> ''x'' が考えられるが、このとき log<sub>''a''</sub> は定数一つを含む形で単項演算子として働く(そのような場合、''a'' はその文脈で固定されているために省略を受け、単に log と記して扱われることも少なくはない)。ただし、仮に ''a'' をも変化させて扱うならば log<sub>''a''</sub> ''x'' なる式において log は二つの被演算子 ''a'' と ''x'' を持つ二項演算子(後述)と解されることになる。<br />
また、log<sub>''e''</sub> ''x''をLn''x''と表すことがある。<br />
<br />
=== 二項演算子 ===<br />
{{see also|二項演算}}<br />
'''二項演算子'''({{lang-en-short|binary operator}})とは、二つの被演算子から一つの結果を得る演算を表す演算子。数学での写像を表現するのに通常は[[前置記法]]で書くのに対して、二項演算子は[[中置記法]]で書くことが多い。つまり、"''k'' + 3" のように演算子を二つの被演算子の中間に置く。<br />
<br />
[[二項演算]]を2変数の関数として、''B''(&middot;, &middot;) のように関数子と括弧とコンマを用いた形式で(「&middot;」の位置にそれぞれ適当な被演算子を配置して)表すこともしばしばある。このような形式で被演算子を併記する方法では二項以上の多項演算も表現することができる。明示的な関数子をもたない場合もあり、例えば[[内積]] "&lt;&middot;, &middot;&gt;", 微分作用素([[リー代数]])の括弧積(リーのブラケット)"[&middot;, &middot;]", [[ハミルトン力学|ポアソン括弧]] "{&middot;, &middot;}", [[平方剰余の相互法則|ルジャンドル記号]] "(&middot; / &middot;)" などが挙げられる。これらは複数の記号で一つの演算子の働きをする。また、例えば[[二項係数]]の2種類の記法<br />
:<math>{}_\bullet{\rm C}_{\bullet},\quad {\bullet \choose \bullet}</math><br />
のように、一つの演算に対して複数の異なる記法の(場合によっては形式も異なる)演算子が用いられていることもある。<br />
<br />
=== 多項演算子 ===<br />
二項演算子における記法の多くはそれ以上の任意有限個の被演算子を持つ演算子に対しても、引数を列記する方法を与えるなどの適当な方法で拡張を受ける。さらに、[[添字集合]]を適当に指定することによって複数(一般には無限個)の被演算子を一つの被演算子に見立てることも有限的な記述には効果的である。それによって無限個の被演算子を持つ演算子に有限項演算の記法を援用することが可能になる。また、このとき与えた添字もやはり被演算子と解釈することが可能である。<br />
<br />
また、前述の log に対する記述とまったく同じ理屈を逆に考えれば、二項演算子のとる二つの被演算子のうち一つを固定する(代入可能な値を代入する)ならば、それによって新たに単項演算子が得られる(あるいは固定する被演算子を添字とする単項演算子の族が得られる)ということが理解される。同様にして、多くの被演算子を持つ多項演算子のうち一つあるいは複数の被演算子を固定することによって、与えられた多項演算子をより制限された数の被演算子を持つ演算子族と読みかえることができる([[カリー化]])。<br />
<br />
== 意味的分類 ==<br />
=== 算術演算子 ===<br />
[[算術|四則演算]]のたぐいを表す演算子、たとえば和を表す "+" や積を表す "&times;" などは二項演算子である。算術演算においては多くの場合、二つの被演算子はひとつの代数系から取られた同種のものであり、結果も同種であることが多い。<br />
<br />
=== 関係演算子 ===<br />
{{Main|関係演算子}}<br />
二つの被演算子の[[関係]]を示す記号のことを'''関係子'''という。関係子を、二つの被演算子の関係が真であるか偽であるかを判定する演算を表す演算子とみなすとき、'''関係演算子'''という。[[数理論理学]]では、関係演算は二つの数式から[[真理値]](ブール値)を得る演算とみなされる。関係演算子もその多くが二項演算子として機能することから中置記法で記されることが多い。<br />
<br />
[[等式|等号]] "=", [[不等式|不等号]] "&lt;", "&gt;", "&le;", "&ge;", "&ne;", [[平行]]記号 "&#x2225;", [[垂直]]記号 "&perp;" などが関係演算子である。<br />
<br />
=== 論理演算子 ===<br />
数理論理学における'''論理演算子'''は、被演算子の真理値(真・偽)に対する[[論理積]] "&and;" や[[論理和]] "&or;" などの[[論理演算]]を表し、中置記法で書くことが多い。([[否定]]を表す前置の単項演算子 "&not;" もある。)<br />
<br />
== プログラミングにおける演算子 ==<br />
[[プログラミング (コンピュータ)|コンピュータプログラミング]]においては、主に記号を用いて演算を指示するものが演算子と呼ばれる。概ね数式などの記述を模倣しているが、一部の演算子に通常と異なる記号が用いられたり、[[副作用 (プログラム)|副作用]]を持っていることがあるなど、数学の演算子とは異なる点もある。<br />
<br />
===算術演算子===<br />
算術演算子として、四則演算のうち加減算には、一般的な算術と同じ演算子 "+", "&minus;" を用いる。乗算の演算子には "&times;" の代わりに "*" ([[アスタリスク]])を用い、除算には "&divide;" の代わりに "/" ([[スラッシュ (記号)|スラッシュ]])が用いられる。一般的な算術にはない演算子として、[[剰余演算]](除算の余りを求める)演算子 "%" ([[C言語]]の場合)がある。剰余演算子 "%" の代わりに英字列 "mod" を用いる言語もある。また、[[累乗]]の演算子を持つ言語もある。<br />
<br />
===関係演算子===<br />
[[関係演算子]]は、およそ数学とあまり変わらないが、プログラミング言語によって細かい差異が比較的多い傾向にある。以下はその例である。<br />
;= の意味<br />
:[[C言語]]の系統では、= を代入に用いるため、等号には == を用いる。また、== と === という、異なる比較基準の演算子を持つ言語もある。<br />
;不等号<br />
:1 < x < 5が「xは1より大きく5より小さい」を意味しないプログラミング言語が多い。そのような場合には論理演算子を使って「1 < x and x < 5」のように記述する。<br />
;≤, ≥<br />
:<=, >=を用いることが多いが,言語によってはさらに=<, =>を認めるものもある。<br />
;≠<br />
:言語によって、<nowiki><></nowiki>や != などが使用される。<br />
<br />
===論理演算子===<br />
{{seealso|論理演算子}}<br />
[[論理演算子]]として、論理積の "and"、論理和の "or"、否定の "not" などがある。[[排他的論理和]]の "xor" もある。他に、数値に対して[[二進法]]での各桁に論理演算子を適用する[[ビット演算]](bitwise operation)の演算子(bitwise operator)がある。一部の言語では、ビット演算の演算子が論理演算子の意味にも[[多重定義]](オーバーロード)されている(C言語では[[ブーリアン型]]が無くintが兼用されているので、混用するとバグになることがある)。<!--また、条件文に対する[[糖衣構文]]として--><!--糖衣構文とは構文的に変形するのみで、全く同じ意味になるものを指す。条件演算子には値があるが、条件文には値が無いため、意味的に異なる。よって糖衣構文ではない。-->他に三項演算子の、[[条件演算子]]や、条件演算子のnull比較時の糖衣構文として[[Null合体演算子]]をもつ言語もある。<br />
<br />
===その他の演算子===<br />
代入や[[インクリメント]]といった、動作に応じて変化していく[[変数 (プログラミング)|プログラミング言語の変数]]としての機能に対応した演算子も存在する。<br />
<br />
このほかにも、プログラミング言語によっては[[文字列]]、[[正規表現]]、[[参照 (情報工学)|参照]]、[[配列]]、[[動的メモリ確保]]、[[名前空間]]など、数学的な範囲を超えた多様な分野について、それを操作するための演算子が存在する。<br />
<br />
[[C++]]などのように、最近のプログラミング言語では既存の演算子に自分で新たな意味を定義することができるものがある([[利用者定義演算子|演算子多重定義]])。また[[Smalltalk]]、[[Haskell]]、[[ALGOL]]および[[Fortran]](Fortran 90 以降)では、利用者が自分で新たな演算子を定義することができる('''[[利用者定義演算子]]''')が、これは珍しい例である。<br />
<br />
== 脚注 ==<br />
{{脚注ヘルプ}}<br />
{{reflist}}<br />
<br />
== 関連項目 ==<br />
* 数学<br />
** [[写像]]<br />
** [[算法]]<br />
** [[単項演算]]<br />
** [[二項演算]]<br />
** [[三項演算子]]<br />
** [[数学記号の表]]<br />
* 情報工学(プログラミング)<br />
** [[関数 (プログラミング)]]<br />
** [[引数]]<br />
* [[演算子の優先順位]]<br />
* [[被演算子]]<br />
<br />
{{デフォルトソート:えんさんし}}<br />
[[Category:代数学]]<br />
[[Category:数学の表記法]]<br />
[[Category:プログラミング言語の構文]]<br />
[[Category:数学に関する記事]]</div>
1.115.3.138
Warning : Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46