はじめての親子ハイキングに挑戦!! >>

プログラムのようにテキストしか扱えない文書の場合、階乗の記号として ^ を使ったりしますが、

1. なぜこの記号が使われるようになったのでしょう。
2. 世界的に通用するのでしょうか。
3. C などではこの記号は排他的論理和をあらわしますが、混乱しないのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

こんにちは



1.スプレッドシート系のソフトでは殆ど累乗は^ですね。Windowsの電卓を関数電卓にすると[x^2]、[x^3]、[x^y]というボタンがあります。
このハットが累乗として使われる理由になったのは、定かでは無いのですが、累乗は上付きで表記しますよね。また、添え字は下付きで表記する事があります。
下付きの添え字はx_yの様にしたり、x[y]の様に配列の様にしたりします。
これらをふまえると累乗の上付きは、オーバーバーを使いたかったけど、無かったからハットになった可能性が考えられます。

2
世界的に通用するかと言えば、一般的では無いものは冒頭で説明しておけば問題ないですね。
C言語のマニュアルとかに階乗を^で説明するのは不味いですね。

3.
**はFORTRANですね。C言語ではポインタのポインタになります。
math.hにpow()またはpower()といった関数があります。
また、累乗の指数が0.5になる場合はルート(√)ですので、sqrt()といった関数でも良いですね。
こういった様にC言語の中では^は排他的論理和としてしか使えない訳ですから、混乱はしません。
^を累乗だと勘違いしてコーディングして、バグっていて、ここが悪いと気が付かない場合もあります。これがまさに混乱している状態ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
C 関連の文書の中では ^ も ** も使えないですね。

お礼日時:2003/08/10 08:41

1. 1970年代後半以降に普及したBASICでは ^ はべき乗でした。

多数意見であったかどうかは私にはわかりませんが、少なくとも下地はあったと言えるでしょう。

2. TeXの作者としても有名なクヌース先生(数学者)の書かれた文献でも ^ がべき乗として使用されているので、世界的に通用すると考えていいと思います。

3. 数式のテキスト表現とコーディングが同じであったら、2a+3b などの表現や √πなどの記号も使えなくなってしまうので、それらは別ものだと考える方が自然です。そう思っている人が混乱することはないでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
^ はべき乗の記号として世界的に認知されていると考えてよさそうですね。
今後 C 関連以外の文書の中ではこれを使っていこうと思います。
C 関連文書の中では power() 等を使わざるを得ないですね。

お礼日時:2003/08/10 08:53

1. 理由はわかりませんが、8ビットCPU時代のパソコンでは一般的だったBASIC言語での表記が最初だったと思います。



2. コンピュータ関係の人にならたぶん通用します。

3. 私は、不思議と混乱しないですね。そもそも排他的論理和という演算自体、アセンブラでもなければ滅多に使わないもののような気がします。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
なるほど、もともと BASIC で使われていたのですね。

お礼日時:2003/08/10 08:45

1.に関して


ものすごく自信無いですが
^の文字は昔↑みたいなフォントだったそうで
上付きを示すために使われた
という話を聞いたような気がします

ホントに自信ありません
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
確かに上付きの記号とみなせばべき乗の記号としてぴったりですね。

お礼日時:2003/08/10 08:42

1、よく知りません。


TeXという印刷用ソフトで、^を「上付」の記号としていましたが…。

2、コンピュータ関係の人には通用すると思いますが、
一般には通じないかもしれません。

3、混乱する場合もあります。実際にここのサイトで、
2乗のつもりでx^2と書いて、悩んでいた人がいました。

なお、C、C++、Javaには、累乗の演算子は存在しません。(**というのも使いません)
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
最近の言語にはべき乗の演算子自体がないわけですね。

お礼日時:2003/08/10 08:34

階乗ですか?


^(ハット)はExcelなどは累乗(べく乗)に使います。

Cなど言語では「**」です。

C言語などの言語もExcelも世界中で使われていますから
通用します。使う局面で使い分けます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

^ は Exel で使われていたのですね。

確かに FORTRAN では ** はべき乗の記号でしたね。他の言語でもこの記号が使われているのでしょうか。

最近ある文章に ** をべき乗の意味で使ったら、若い人から「これは何の記号ですか」と聞かれたので、最近の言語ではこれは使わないのかと思ったものですから。

お礼日時:2003/08/09 12:45

まず、階乗ではなくべき乗、累乗ですね。


階乗は5!=5×4×3×2×1 ですね。

1.何かのプログラムで使っていたような気が・・・。
2.どうでしょうか。
3.多少の混乱はあるかもしれませんが、
  見れば周りの雰囲気から殆んど区別はつきますよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
確かにべき乗でしたね。失礼しました。

お礼日時:2003/08/09 12:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Q#ifdef の使い方

組み込み系のプログラムを現在勉強しています。
#ifdefについて質問させて頂きます。

下記コードの場合

#ifdef A
---- (1) Y = Z;
#else
-----#if B
------- (2) X = Z;
----#endif
#endif

("-"は空白と思ってください。)

この場合、Aが定義されていれば(1)が実行しコンパイル終了(#endif)。
Aが定義されていない場合、#else に行き、Bが定義されている場合は
(2)を実行してコンパイル終了(#endif)という理解であっていますか?

またこうした方が分かりやすいなど、アドバイス頂けると幸いです。
ご返答よろしくお願いします。

Aベストアンサー

言葉の使い方に若干の不安を覚えます。

> Aが定義されていれば(1)が実行しコンパイル終了(#endif)。

「Aが定義されていれば(1)の部分のみがコンパイルされる」と言うべきでしょう。コンパイル時には(1)を実行しませんし、#endifでコンパイルが終了するわけでもありません。

> Bが定義されている場合は

#ifdef Bではなく#if Bなので、「Bが真であれば」が正しいです。

> またこうした方が分かりやすいなど

質問文にあるコードなら、下記のようにすると少し見やすくなります。

#ifdef A
---- (1) Y = Z;
#elif B
---- (2) X = Z;
#endif

QC言語の enum の使い方

インターネットのサイトなどを利用してC言語を勉強しています。 いま一通り基本的な勉強が済んだところですが、enum というユーザー定義変数をどんな風に使えばよいのか、今ひとつわかりません。サンプルコードなどを見ても、 enum でなくても配列を使えば出来そうなものが多いのですが、この型の変数はどう使えば効果的なのでしょうか。
詳しい方、どうかよろしく教えてください。

Aベストアンサー

>enum というユーザー定義変数を

変数ではないでしょう。
むしろ定数かと。

>enum でなくても配列を使えば出来そうなものが多いのですが

具体的になにがあります?
ちなみに配列ではありませんので誤解なきよう。

http://homepage2.nifty.com/well/enum.html
とか、いい感じに説明されていますかね。
defineだとただの置き換えなので何でも設定できてしまう。とか型チェックができない。とかの問題があります。

私自身、最近使ったやり方では…テーブルのインデックス用に使いましたね。

QTx Rx の『x』の意味は何ですか?

通信系の仕様書によく出てくる
Tx Rx なる略語があります。

Tx:送信機(Transmitter)を表す略語。
Rx:受信機(Reciver)を表す略語。

だと思うのですが、この『x』って何の意味があるの?

ご存知の方いらっしゃいましたらご教授下さい。

Aベストアンサー

No.1です。

No.2さん、No.3さんが言われているのはRS-232CのTXD、RXDの事ですね。
これはTXとかRXとは別物です。

Tx:TX:Transmitter(送信機)
Rx:RX:Reciever(受信機)

TXD:Transmit eXchange Data (データ送信ピン) 
RXD:Recieved eXchange Data (データ受信ピン) 

QString^の^自体が何を意味しているのか、わかりません。

String^ msg = "テスト";
は、
char msg[] = "テスト";
と同じ意味でしょうか?

String^の^自体が何を意味しているのか、わかりません。
TurboCからC言語は殆ど使っていませんので、戸惑っています。

VS2005を覚えようとしているのですが、なかなか取っ付きにくいです。
意識改革できる参考書などご存知の方も教えてください。

Aベストアンサー

簡単にいうと^(ハットマーク)は実体がヒープに確保されるという意味です。

他の方の指摘の通り、これはC++/CLIと呼ばれる言語でC++で.NET Frameworkを
利用するために拡張した言語です。
.NET Frameworkのクラスはガベージコレクションで管理されている為
C++のクラスとは別に管理する必要があります。その為
^(ハットマーク)をつける事により区別しています。

ちなみにC++マネージ拡張とC++/CLIは違います。
2003以前の仕様をC++マネージ拡張と言い
2005以降のものをC++/CLIと言います。

System::Stringはスタックに置くことは出来ないので
System::String^ msg;
となります。

System::Drawing::Color等は
スタックに置くこともヒープに置くことも可能です。
System::Drawing::Color^ col1 = gcnew System::Drawing::Color();
System::Drawing::Color col2;
int test1 = col1->R;
int test2 = col2.R;

C++/CLIの参考書としては
中 博俊著 「実践 C++/CLI 極めるための基礎と実用テクニック」
がありますが、
まずC/C++を理解していることが前提になっていますので
もしC/C++の理解に不安があるようなら先に勉強した方が良いでしょう。
有名な書籍だと「独習C」と「独習C++」があります。

前述の通りC++/CLIは.NET Frameworkを使うためのものですが
.NET Frameworkを使いたいのであればC#の方が良いと思います。

簡単にいうと^(ハットマーク)は実体がヒープに確保されるという意味です。

他の方の指摘の通り、これはC++/CLIと呼ばれる言語でC++で.NET Frameworkを
利用するために拡張した言語です。
.NET Frameworkのクラスはガベージコレクションで管理されている為
C++のクラスとは別に管理する必要があります。その為
^(ハットマーク)をつける事により区別しています。

ちなみにC++マネージ拡張とC++/CLIは違います。
2003以前の仕様をC++マネージ拡張と言い
2005以降のものをC++/CLIと言います。

Syst...続きを読む

Q戻り値で構造体を返すことは可能でしょうか?

perlでは以下のように2つの戻り値が可能ですが、C言語では
それができるのでしょうか?
my (ret1, ret2) = test1();

よくやるのは、引数にポインタを渡して、内容を書き換える手を使っていますが、戻り値を複数返せたら、直感的にわかりやすいかなと思いまして・・・

Aベストアンサー

C言語から遠く離れた者ですが、

>>> よくやるのは、引数にポインタを渡して、内容を書き換える手を使っています

これが常識でしょう。これが直感的に理解できるようにC言語を身に付ける必要があるのではないでしょうか。

Q識別子の外部結合について

識別子について調べていてわからないことがあり
質問させて頂きます。

以下のコードの場合変数aは外部結合ですか
それとも外部結合以外となるのでしょうか。

識別子の宣言に対し同一ソースファイル内の関数内で
その識別子の定義がある場合、その識別子は外部結合か
どうかが知りたいのです。

ご存じの方すいませんがよろしくお願いします。

--test.c--
static int a;

main()
{
・・・
}

function1()
{
a = 1;
・・・
}

function2()
{
a = 1;
・・・
}

Aベストアンサー

> 以下のコードの場合変数aは外部結合ですか
> それとも外部結合以外となるのでしょうか。

内部結合です。
ファイル有効範囲で宣言した関数・オブジェクトの結合は、大雑把にいうと次のような基準で決まります。

・externが付けば外部結合
・staticが付けば内部結合
・externもstaticも付かなければ外部結合

ただし、externもstaticも付かない場合、同一翻訳単位に同名の関数・オブジェクトの宣言があり、そちらにexternまたはstaticが付いているならそれに従います。
具体的には、

int a;
static a;

とあれば、aは内部結合になります。

> 識別子の宣言に対し同一ソースファイル内の関数内で
> その識別子の定義がある場合、その識別子は外部結合か
> どうかが知りたいのです。

void f(void)
{
 static int a;
 extern int b;
 int c;
}

とある場合、bは外部結合ですが、他は「結合なし」です。

Qfloat型とdouble型の変数の違いを教えてほしいです

float型とdouble型の変数の違いを教えてほしいです
2Dゲームを作っててdoubleの変数を使ってたんですが使ってはだめだと先輩に言われたんです。
理由を聞いたら、先生が「doubleは使わないほうがいい」と言われたらしくてちゃんとした理由がわかりませんでした。
それを知って何をするということではないんですが、気になって調べても出てこなかったので質問させてください。
まだゲーム作りを始めたばっかりでぜんぜん詳しくないですが教えてくれたら助かります。

Aベストアンサー

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速にできたり、と様々です。
32bitCPUでは、32bitのfloatの方が扱いやすいでしょうが、64bitCPUでは64bitのdoubleの方が扱いやすいかもしれません。
Cのmath.hで使える標準関数はdouble型のものがほとんどです。三角関数は2Dのゲームでも使う機会が多いのではないでしょうか。sinもcosもdouble型です。内部演算は当然doubleですので、変数にfloatを使ったからと早くはならず、むしろfloat型の変数に入れるときに暗黙の型変換が発生する分遅くなる可能性もあります。

そういった背景を考え検討した結果、floatを使う方がよい、と判断したのならいいのですが、「先生に言われた」では理由になりません。
聞けるのなら、その先生に理由を聞いてください。真意がわからないうちは、鵜呑みしないことです。

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速...続きを読む

Qバッファとは何ですか

C言語を使用してるとバッファという言葉がよく出てきますがバッファとは何ですか
メモリとは違うものですか
訳をみても緩衝材とか一時的に蓄える場所という意味でよく分かりません
一時的でない使い方も多い気がしますが実際はどういうものですか

Aベストアンサー

#1です

寝ぼけて適当に書いたので修正。

すぐ見つけることができたもので正確なものは英語版ですがこちらくらいかも。
Data buffer - Wikipedia (en.)
http://en.wikipedia.org/wiki/Data_buffer

一応簡単なものはこちらです。
バッファとは - e-Wrods
http://e-words.jp/w/E38390E38383E38395E382A1.html

「複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく記憶装置や記憶領域のこと。」
が現在の基本定義です。処理速度・転送速度の差のための緩衝材的な意味です。

昔はソフトウェアとハードウェア間に使うデータでソフトウェア側がデータを受け取るか、整形して送信するときに使うメモリ領域が基本的にバッファでした。
マルチプロセッサ・マルチタスクの時代になってくると、ソフトウェア間の処理速度の違いを吸収するために使うメモリ領域にもバッファという言葉が使われるようになりました。ソフトウェア間で逐次(FIFO)処理されるデータのためのメモリ領域がこちらの使われ方の主戦場といったところでしょうか。

ソフトウェア間でただ一括転送されるデータならバッファという言葉は誤用ということになるのですが、よく誤用されます。

#1です

寝ぼけて適当に書いたので修正。

すぐ見つけることができたもので正確なものは英語版ですがこちらくらいかも。
Data buffer - Wikipedia (en.)
http://en.wikipedia.org/wiki/Data_buffer

一応簡単なものはこちらです。
バッファとは - e-Wrods
http://e-words.jp/w/E38390E38383E38395E382A1.html

「複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく記憶装置や記憶領域のこと。」
が現在の基本定義です。処理速度・転送速...続きを読む


人気Q&Aランキング