[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2ch.scのread.cgiへ]
Update time : 07/31 23:13 / Filesize : 215 KB / Number-of Response : 863
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 152



1 名前:デフォルトの名無しさん [2019/06/17(月) 18:27:10.41 ID:3L1/L9kLa.net]
!extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 151
https://mevius.5ch.net/test/read.cgi/tech/1554171817/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

666 名前:蟻人間 mailto:sage [2019/07/22(月) 19:08:12.59 ID:zh10SCAHd.net]
>>665
ソーシャルゲームを作るなら、暗号化は必須。暗号化方式を決めて、それに合った暗号化専用のライブラリーを使う形になる。

667 名前:デフォルトの名無しさん [2019/07/22(月) 19:10:57.83 ID:LktYqlpm0.net]
>>666
C言語の暗号化ライブラリで使いやすいのおせーてください

668 名前:蟻人間 mailto:sage [2019/07/22(月) 19:22:24.63 ID:zh10SCAHd.net]
ソーシャルゲームは専門ではないが、暗号化なら
https://ja.m.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E6%AF%94%E8%BC%83

669 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 19:25:19.41 ID:MRg17CtQa.net]
いろいろあるんですけど、ライセンス的にopensslでいいやみたいな感じになりましたね
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。

670 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 21:33:35.10 ID:tAjmkx+m0.net]
同じくopensslでいいんじゃないかと思いますな

671 名前:デフォルトの名無しさん [2019/07/23(火) 03:25:09.81 ID:/ZO3BTO70.net]
gchar **command = (gchar *[]){"./Hello.exe","World",NULL};

を gcc6 で compile すると以下の2種類の warning が出ます。

warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]

warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]

どう書くのが正解なのでしょうか? 教えてください。最後の NULL がなければ、

gchar **command = (gchar **)((char [][20]){"./Hello.exe","World"});

で良いと思うのですが、最後の NULL も必要です。よろしくお願いします。

672 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 04:01:15.67 ID:XJs/DfWFa.net]
要素の文字列をそれぞれキャストしてみるとか?
でも別に文字列の実体を用意した方が無難では。

673 名前:デフォルトの名無しさん [2019/07/23(火) 05:54:57.80 ID:XS6t8zxL0.net]
char * const command[3] = {"./Hello.exe","World"};

674 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 09:58:47.20 ID:J+ZHGa1Mr.net]
初心者で勉強中なんですが、
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが



675 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 10:46:29.88 ID:DdnFitx+M.net]
エラーじゃなくて警告では?
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ

676 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 10:51:17.50 ID:unlUKZmGx.net]
本当は
 switch (a) {
 case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。

677 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 11:36:41.71 ID:LSxEgoA20.net]
>>674
これなんか意味あるの?
具体的に何がしたいか知りたいなあ

678 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 11:42:11.95 ID:CU39ntZ20.net]
>>676
switch(true) って裏技 あれマジで気色悪いよね

679 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 11:44:08.90 ID:SF2VCGvmM.net]
case に何を書けばいいんだ?false は 0 でいいだろうけど、true は?

680 名前:671 [2019/07/23(火) 11:49:30.09 ID:/ZO3BTO70.net]
>>673
>char * const command[3] = {"./Hello.exe","World"};

ありがとうございます。これでも1つめの warning "does not allow conv..." は出ました。皆さんの所では出ませんか?

それと、 command はどうしても char ** 型である必要があります。
仮想端末で何かを実行させる関数 vte_terminal_spawn_async() に与えるためです。
https://developer.gnome.org/vte/unstable/VteTerminal.html#vte-terminal-spawn-async

引き続きアドバイスをお願いします。

681 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 11:53:01.06 ID:4sm3RNn+0.net]
>>674
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる

おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ

不等号や != が使いたければ if 文か3項演算子ということになる

682 名前:671 [2019/07/23(火) 12:04:01.45 ID:/ZO3BTO70.net]
>>672
ありがとうございます。具体的にはどうしたら良いでしょうか?

char list[2][20] = {"./Hello.exe","World"};  
gchar **command = (gchar **){ (char *)list[0], (char *)list[1], NULL};

だと、↓のエラーになります。
error: function-style cast to a builtin type can only take one argument

正しいやり方をお願いします。

うーむ。どうしたものか。 gchar ** 型をどうやって作るのかさっぱり分からない。。。
ダブルポインタがよく分かってない。もう warning は放っておくしかないのかな?

683 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:10:49.21 ID:XJs/DfWFa.net]
その前に、671の警告でC++11って出てるのはなぜなのか。
複合リテラルってあれキャストではないよな。知らんけど。

684 名前:671 [2019/07/23(火) 12:21:12.41 ID:/ZO3BTO70.net]
>>672

gchar list1[][20] = {"../Exe/H2O.exe","World"};
gchar *list2[] = {(gchar *)list1[0], (gchar *)list1[1], NULL};
gchar **command = (gchar **)list2;

いろいろ試したところ、↑だと warning でなくなりました。意図されたのはコレでしょうか?コレで良いでしょうか?



685 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:21:15.34 ID:d2s+lfJ+0.net]
>>682
https://ideone.com/a1eBqF
これなら警告出ないけど、やりたいことと合ってるかどうかは知らん

686 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:22:08.73 ID:7yf4dx7Q0.net]
>>680
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。

687 名前:671 [2019/07/23(火) 12:24:46.80 ID:/ZO3BTO70.net]
>>683
なんかおかしいですよね。

でも Makefile に書いていいて実際に compile に使っているのは間違いなく gcc6 です。
warning が g++6 と共通なのですかね?

688 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:30:44.31 ID:d2s+lfJ+0.net]
https://ideone.com/Cek4Tz
そもそもgcharってなんなの?
charのエイリアスかなんか?

689 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:33:40.67 ID:d2s+lfJ+0.net]
> warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
charのエイリアスか
なら最初に書いとけよ

690 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 12:38:30.05 ID:XJs/DfWFa.net]
>>684
そういう話です。

691 名前:671 [2019/07/23(火) 13:18:08.85 ID:/ZO3BTO70.net]
>>688
ありがとうございます。スマートですね。参考にします。
gchar は char の別名です。すみません。

692 名前:671 [2019/07/23(火) 13:24:51.89 ID:/ZO3BTO70.net]
>>683
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。

693 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 14:56:41.16 ID:XJs/DfWFa.net]
>>692
C++に複合リテラルないんじゃないかな。なくても困らんか。

あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。

694 名前:671 [2019/07/23(火) 17:13:31.67 ID:TCk4qRZWa.net]
>>693
ありがとうございます。なるほど、複合リテラルですね。調べてみます。

自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...

これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。

strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。



695 名前:デフォルトの名無しさん [2019/07/23(火) 18:36:28.60 ID:5chEKyGia.net]
C++ には引数に void だけって関数がないらしいぞ。
その他細かい違いがあるかも知れないので要注意だ。

696 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 18:58:12.02 ID:Ffr5F2PG0.net]
どちらかというと()の解釈が違う
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある

697 名前:デフォルトの名無しさん [2019/07/23(火) 19:36:26.79 ID:5chEKyGia.net]
こうしてまた(void)論争が始まり3スレぐらい消費されるのであった。

698 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 19:42:24.88 ID:FnKSwmbm0.net]
生兵法家しかいないスレだから仕方ないね

699 名前:デフォルトの名無しさん [2019/07/23(火) 19:45:15.53 ID:5chEKyGia.net]
また一つ燃料が投下された

700 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 20:15:50.53 ID:xWhG5FgG0.net]
線香花火程度

701 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 20:23:08.15 ID:d2s+lfJ+0.net]
strdupはいつになったら標準ライブラリに入るんですか?

702 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 20:55:09.99 ID:4sm3RNn+0.net]
> cは()が(void)と同じになる文脈とそうでない文脈がある

ほほう、それはどんな場合だ? 具体的なコードで示せるか?

703 名前:デフォルトの名無しさん [2019/07/23(火) 20:56:28.16 ID:LLlz9dHQ0.net]
>>668
>>669
>>670
ありがとう!
なんとかがんばってやってみます

704 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:08:17.10 ID:Ffr5F2PG0.net]
int f();

int f()
{
return 1;
}



705 名前: mailto:sage [2019/07/23(火) 21:21:24.40 ID:JcFEdZGk0.net]
>>702
@(void) と同じ
void f() { return; }
A(void)と違う
void f();

706 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:47:42.09 ID:4sm3RNn+0.net]
>>705
https://paiza.io/projects/v_bGi1kbrLaV_smq5mvcNA
https://ideone.com/iJZS6H
codepad.org/gy8qyLSL

707 名前: mailto:sage [2019/07/23(火) 21:55:11.77 ID:JcFEdZGk0.net]
>>706
thx 納得しました
https://ideone.com/0Bi6G8

708 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 21:58:12.31 ID:Ffr5F2PG0.net]
>>706
https://ideone.com/whHGrw

709 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 22:01:20.82 ID:4sm3RNn+0.net]
>>708
ん、何が言いたい?

710 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 22:13:17.57 ID:Ffr5F2PG0.net]
>>709
()と(void)が違う例
1行目のコメントはずして、2行目にコメントつけたらコンパイル通る

定義の時は()は(void)と同じで引数の無い関数の定義になる

711 名前: mailto:sage [2019/07/23(火) 22:19:55.80 ID:JcFEdZGk0.net]
>>710
>定義の時は()は(void)と同じで引数の無い関数の定義になる
そ、れ、が…
https://ideone.com/1jHHOQ

712 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 22:31:08.37 ID:cffvmBp10.net]
プロトタイプ宣言で引数部分を空にすると引数チェックがされなくなる
例えばこんなコードも動く
ideone.com/rjTqQt

713 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 22:43:31.16 ID:Ffr5F2PG0.net]
https://softwareengineering.stackexchange.com/questions/286490/what-is-the-difference-between-function-and-functionvoid

draftだから正規版で変わった可能性もあるが
n1570の133,134ページに記載がある

714 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 23:42:31.01 ID:4sm3RNn+0.net]
>>710
すまんが、寝落ちする
明朝またくる



715 名前:デフォルトの名無しさん [2019/07/24(水) 02:42:47.45 ID:S0ZgllDI0.net]
はっ。ちょっと目を離したスキに(void)ネタだけでもうこんなに書き込みが。

716 名前:デフォルトの名無しさん [2019/07/24(水) 03:03:06.58 ID:VPRaWuN40.net]
2進数で表現されている多倍長整数を10進数の文字列に変換する場合、機械語レベルではどうするのが現代風ですか。

レジスタ長までならBCD変換でしょうか?

例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。

多倍長ならまた違ってきますか。

717 名前: mailto:sage [2019/07/24(水) 05:30:33.02 ID:+4E3jW9F0.net]
>>716
C++ ですが多桁長演算を書いています。
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51
std::ostream &operator<<(std::ostream &stream, mpz_base_class c)
std::ostream &operator<<(std::ostream &stream, mpz_class c)

718 名前:デフォルトの名無しさん [2019/07/24(水) 06:54:11.66 ID:VPRaWuN40.net]
>>717
ありがとうございます。
多倍長演算では内部2進数のまま演算しているのですね。

719 名前:デフォルトの名無しさん [2019/07/24(水) 06:55:28.24 ID:VPRaWuN40.net]
改めて質問します。

2進数で内部表現されている整数を10進数の文字列に変換する場合、
機械語レベルではどうするのが現代風ですか。

レジスタ長までならBCD変換でしょうか?

例えば、Cのprintf(“%d”, 12345)はどういう実装がされますか。

720 名前:デフォルトの名無しさん [2019/07/24(水) 09:34:09.57 ID:UuFmwqvta.net]
現代風?

現代だろうが古代だろうが10で割った余りを並べながら10で割る事は変わらんと思うが。(CPUによってはBCDに一発変換なんて命令あるのかな?あればそれ使うと速いだろうね)。

721 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 10:27:00.90 ID:H/U9sRCS0.net]
JIS X3010:2003
6.7.5.3 関数宣言子(関数原型を含む)
意味規則 宣言“T D1”においてD1 が形式
D ( 仮引数型並び )
又は
D ( 識別子並びopt )
をもつ場合,次のとおりとする。
識別子並びは,関数の仮引数の識別子だけを宣言する。関数定義の一部である関数宣言子で識別子並びが空の場合,関数が仮引数をもたないことを指定する。関数定義の一部でない関数宣言子の識別子並びが空の場合,仮引数の個数及び型の情報がないことを指定する(124)。
(124) “今後の言語の方針”(6.11.6 参照)。
(125) 両方の関数型が“古い形式”の場合,仮引数の型は比較されない。

6.11.6 関数宣言子 空の括弧を伴う関数宣言子(関数原型形式の仮引数型並びではない。)の使用は,廃止予定事項とする。
6.11.7 関数定義 仮引数の識別子並びと宣言並びを別々に与える関数定義(関数原型形式の仮引数の型及び識別子の宣言ではない。)の使用は,廃止予定事項とする。

722 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 10:30:48.21 ID:sKxa8jzv0.net]
>>719
こうなっているらしい

printf()のソースコードで、ソースコードリーディングのコツを身に付ける (2/3):main()関数の前には何があるのか(5) - @IT
https://www.atmarkit.co.jp/ait/articles/1703/01/news170_2.html

723 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 10:35:17.11 ID:q7vPBAFqa.net]
ソースのコメントで変数毎に「16進整数」とか「10進整数」とか区別してるのあったけど意味わからんかった。
全部intなのに。

724 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 10:50:43.56 ID:H/U9sRCS0.net]
void f() {} //関数定義の一部である関数宣言子で識別子並びが空の場合,関数が仮引数をもたないことを指定する。
void g(); //関数定義の一部でない関数宣言子の識別子並びが空の場合,仮引数の個数及び型の情報がないことを指定する(124)。

int main()
{
f(1); //NG: 0個の仮引数に1個の実引数
g(1); //OK: 任意の仮引数に1個の実引数
}

void f(); //両方の関数型が“古い形式”の場合,仮引数の型は比較されない。
void g() {} //両方の関数型が“古い形式”の場合,仮引数の型は比較されない。

/*
D:\learn\c>cl 710.c /W4 /nologo /c
710.c

D:\learn\c>gcc 710.c -Wall -std=c18 -c

D:\learn\c>clang-cl 710.c /W4 /c
710.c(6,8): warning: too many arguments in call to 'f'
f(1); //NG: 0<8C><U+0082>?<BC><88><F8><90><94><82><C9>1<8C><U+0082>?<C0><88><F8><90><94>
~ ^
1 warning generated.

D:\learn\c>
*/



725 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 12:11:20.90 ID:/HKiGEdd0.net]
>>723
ひょっとして変数の接尾語に10進数や16進数を表す3文字以下のものを
付けるべきなのでは?
他のところの計算の時に間違えてしまう可能性が減ると思う

726 名前:デフォルトの名無しさん [2019/07/24(水) 12:43:12.82 ID:PgWkyPpkM.net]
>>720
Z80やx86にはBCD関連の命令がありました。

最近のレジスタビット数の大きいプロセッサは知りませんので伺いました。

10で割った余りだと桁数nとしてO(n^2)の計算量になりますよね。
流石にそれはないかなと思っています。

727 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 12:53:46.86 ID:iTtNhbrVM.net]
https://days-of-programming.blogspot.com/2016/01/picbcd.html?m=1

728 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 13:07:48.35 ID:q7vPBAFqa.net]
O(n)じゃないか?
x64はもう命令ないんだね

729 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 13:17:22.40 ID:/roNvT5Ja.net]
O(n)だね。
文字列変換時にBCDにするのではなく演算からBCDとして扱うプログラムを見たことある。
あまり効率が良いとは思えなかったが。

730 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 17:12:57.35 ID:s/qhJVlP0.net]
x64の場合、ALUでやる2ケタの加減乗除の方は廃止だが、FPUでやる18ケタの10進と2進の間の変換はまだ使える

731 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 17:15:31.56 ID:rxR1MP+Fd.net]
聞くのはここでいいのか微妙だけど質問です
abzのエンコーダで回転方向を検知したいんですがzパルスでリセットされるときに回転方向が正しく検知されなくなってしまうところの解決方法どなたか知ってますか

732 名前:デフォルトの名無しさん [2019/07/24(水) 17:21:50.17 ID:PgWkyPpkM.net]
>>728
mod 10でO(n)、
それを桁数nに比例した分繰り返すからO(n^2)
と考えています。

O(n)で内部2進表現の整数→10進数の文字列に変換ができればいいのですけどね。

あるいはdecimal型を持つ言語がありますが、そのような型では内部でBCDで持ってたりするのでしょうか。

733 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 17:55:29.62 ID:YVgDjaZ/M.net]
1桁分のmod 10だけなら計算量は固定なのでO(1)
n桁分を繰り返すなら計算量はO(n)
すべての計算量のオーダーとしてはO(n)

734 名前:デフォルトの名無しさん [2019/07/24(水) 18:22:37.58 ID:+vIzXAhOd.net]
>>733
わかりました。
剰余を固定命令数でできる桁数内であればO(n)でできるということですね。

現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?

printfの%dもこの実装が主流でしょうか。



735 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 18:23:32.53 ID:q7vPBAFqa.net]
modの計算量が固定ってこともないんじゃ?
除数にかなり依存しそうな

736 名前: mailto:sage [2019/07/24(水) 19:18:26.26 ID:+4E3jW9F0.net]
>>718
そうです、10進法変換は表示のときにはじめて実施します

737 名前: mailto:sage [2019/07/24(水) 19:20:00.24 ID:+4E3jW9F0.net]
>>719
単純に 10 で割った余りを並べるだけですが、ただ >>717 で紹介したコードでは幾分かの最適化が追加されています

738 名前: mailto:sage [2019/07/24(水) 19:21:21.51 ID:+4E3jW9F0.net]
>>726
いや、10 で割った余りそのものであり、他に方法はありません
ただ、最適化の余地はあり、それは >>717 に示しました

739 名前: mailto:sage [2019/07/24(水) 19:22:41.56 ID:+4E3jW9F0.net]
>>729
BCD はインプリメントする側としてはやる気が起きないものだ、と思いますよ
足し算、引き算はいいとして、掛け算、割り算は BCD では実装できないのです

740 名前: mailto:sage [2019/07/24(水) 19:23:34.46 ID:+4E3jW9F0.net]
>>734
>現在、内部2進表現の整数を10進数の文字列に変換する方法としては、mod 10の繰り返しがメジャー(ベスト)ですか?

他に方法はありません、ただし最適化する余地はあると思っています

741 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 21:42:02.70 ID:H/U9sRCS0.net]
>>739
は? 乗算と除算が実装できない??
俺らの脳には義務教育できっちり実装されているんだがw

742 名前: mailto:sage [2019/07/24(水) 21:53:50.78 ID:+4E3jW9F0.net]
>>741
今の話題は BCD
BCD にて効率的に乗算・除算を実装している CPU はありますか?

743 名前:デフォルトの名無しさん [2019/07/24(水) 23:16:58.12 ID:VPRaWuN40.net]
>>737
わかりました。
10進全桁を一旦BCDで全て求めなくても、
10進1桁ずつ求めることが出来るのですね。

>>738
単純に興味があるのでお聞きするのですが
「他に方法はありません」と断定する理由は何でしょうか。

効率を考えなければ、
単なる最適化ではない異なるアルゴリズムの他の方法が
容易に思いつきますが、例えば、
10で割る方法が原理的に最適であると証明できる
というようなことでしょうか。

744 名前:デフォルトの名無しさん mailto:sage [2019/07/24(水) 23:55:14.64 ID:gSIpsgHia.net]
秘密はvoidにありそう



745 名前:デフォルトの名無しさん [2019/07/25(木) 00:31:43.06 ID:iiNbTbUN0.net]
DIVやIDIVを上回る何かを見つけたとしたら大ごとですやん
除算器のない初期のRISCや貧ソな何かで無理矢理だとシフト使こた工夫もアリかもしれんけど
if (x<0) {x = !x; ...}
do {x = x>>4 +(v = t = (x&0xf), t>>=2, t &= (t>>1), v -= t*10, t);...}while (x)
みたいな?

746 名前:デフォルトの名無しさん [2019/07/25(木) 00:55:04.35 ID:iiNbTbUN0.net]
あ、2 と 4 で or 取らなきゃダメか

747 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 01:12:42.13 ID:AQEcWXoca.net]
テーブル探す様な方法はないの?

748 名前: mailto:sage [2019/07/25(木) 05:20:17.48 ID:1pUY2R+h0.net]
>>747
なるほど…そういう方向性はありえますね

749 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 06:55:37.49 ID:PBP8yj9y0.net]
>>742
そう、BCDの話だ
おまえさんはBCDでは乗算と除算が実装できないと言ったんだ
マイクロコードかどうかは関係ない

750 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 10:19:57.39 ID:PDyUwndbM.net]
>>747
あなんか昔はそういうHWがあったらしい

751 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 10:24:34.16 ID:PLeF7EkO0.net]
乗算部分はテーブル化しやすそう
除算は何処で軽くするのがいいのか皆目見当がつかねぇ

752 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 10:39:38.12 ID:AQEcWXoca.net]
10進表記に関しては、いきなり割り算するよりはまず9とか99とか999とか9999とかと引き算なり大小比較なりしてもよさそうだけども。

753 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 10:43:55.98 ID:AQEcWXoca.net]
まあ除算は昔からクソ遅いよな
floatで逆数かける感じの方が速そうだ

754 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 10:50:12.92 ID:D8pzUtDE0.net]
>>753
可能なら逆数を掛けたほうが早いなんてハックに効き覚えがある
(同じように2,4,8はシフト演算子で処理)



755 名前:デフォルトの名無しさん [2019/07/25(木) 12:08:29.39 ID:UzGMA6uu0.net]
ビットリバーサルについて質問です
誰もがわかりやすく簡単にできる方法は
C言語でどうなるでしょうか?

756 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 12:33:12.38 ID:IOfcNDqSM.net]
>>753-754
初期のスーパーコンピューターCray-1はそういう構造
って結構有名な話
https://news.mynavi.jp/article/architecture-389:amp/

757 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 12:35:03.65 ID:/OuGEEZ00.net]
整数定数除算は速度優先オプティマイズでアセンブラ出力見てみなよ

758 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 12:53:26.79 ID:5Cp6xaylM.net]
>>734
隣同士でひっくり返して、2こセットで隣同士でひっくり返して、4こセットで隣同士でひっくり返して…
ってやるらしい。賢いね
uint32_t reverse(uint32_t x) {
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return ((x >> 16) | (x << 16));
}

759 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 12:55:25.80 ID:5Cp6xaylM.net]
おっと>>755の間違い

760 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 13:08:04.63 ID:IOfcNDqSM.net]
>>755
簡単でわかり易いと言うなら素直にビット毎に処理すればいいと思う
unsigned int x = …;
unsigned int y = 0;
for(size_t i = 0; i < 32; i++){
y <<= 1;
y |= x & 1;
x >>= 1;
}
てな感じ
高速化したいならテーブル引くなりすればいいかと

761 名前:デフォルトの名無しさん [2019/07/25(木) 13:31:47.50 ID:UzGMA6uu0.net]
>>758
>>760
ありがとうございます
どちらともわかりやすいですね!

762 名前:デフォルトの名無しさん [2019/07/25(木) 13:33:38.69 ID:UzGMA6uu0.net]
高速フーリエ変換でのビットリバーサルの書き方がどんなものがあるのか興味があったのでききました

ビットリバーサルでの処理では速度は余り変わらそうなのでわかりやすい

表記で書こうとおもいます

763 名前: mailto:sage [2019/07/25(木) 19:25:45.50 ID:1pUY2R+h0.net]
>>749
では訂正しましょう
「BCD では『効率的な』乗算・除算は実装できない」、てへぺろ

764 名前: mailto:sage [2019/07/25(木) 19:26:49.53 ID:1pUY2R+h0.net]
>>754
その逆数を実時間で効率的に求める方法はありますかね…あらかじめ求めておくというのは除いたとして



765 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 20:09:17.88 ID:S7g95QIG0.net]
BCDじゃなく10bitで10進3桁表すieee 754-2008のdecimal floating pointだと、回路的にそこまで無駄じゃないよね

766 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 20:28:09.79 ID:AQEcWXoca.net]
>>764
ニュートン法とか?

767 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 20:40:39.43 ID:2UHg/Et4M.net]
>>763
効率的とは?
ハードワイヤードでも組めるだろ?

768 名前:デフォルトの名無しさん [2019/07/25(木) 20:56:17.18 ID:UzGMA6uu0.net]
加算 減算 乗算 除算 って回路的にどうやってるんだ?
マルチバイブレータ系の回路が基本になってるのはわかるけど
詳細部でどうやってるんだ?

769 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 21:14:22.23 ID:mnPttr/b0.net]
log通った後だと 乗算が加算に 除算が減算になるけど
log通して加減算した後に累乗で戻すほうが重いんじゃろな

770 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 21:23:45.17 ID:zGmF5f4I0.net]
>>768
加減算はXORそのもの。
乗除は知らん。

771 名前:デフォルトの名無しさん [2019/07/25(木) 21:49:16.57 ID:UzGMA6uu0.net]
>>770
加減算のXORの場合 繰り上がりはどうやってるんだ?

772 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 22:44:02.09 ID:nrEjL4Jo0.net]
>>771
単なるANDだろ
https://ja.m.wikipedia.org/wiki/加算器

773 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 22:52:27.40 ID:fhhE/m2Aa.net]
繰り上がりはand
ただ実際は一気にがばっと先読みするので、すぐ下の桁だけに依存するわけではない

774 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 23:15:13.43 ID:ulXo9PgcM.net]
お前らコンピュータアーキテクチャの勉強もしたことないのか?



775 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 23:18:36.17 ID:QJIil52G0.net]
ビジコン嶋さんがアップをはじめました

776 名前:デフォルトの名無しさん [2019/07/26(金) 00:14:46.69 ID:jqp1LWPO0.net]
>>772
https://ja.wikipedia.org/wiki/%E5%8A%A0%E7%AE%97%E5%99%A8
半加算器と全加算器の組み合わせとかいろいろあるんやなw

777 名前:デフォルトの名無しさん [2019/07/26(金) 00:22:06.93 ID:jqp1LWPO0.net]
キャリールックアヘッドアダー  っていう加算器の高速化手法もあるんかぁw

778 名前: mailto:sage [2019/07/26(金) 08:11:37.04 ID:PuJwVoXL0.net]
>>777
実はリップルキャリーと回路は同じです
キャリールックアヘッドは、「多入力ゲートは2入力ゲートを組み合わせた分よりも速い」という仮定のもとに組まれたものです

779 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 08:36:36.41 ID:MNOQNbTnM.net]
またまたいい加減なことを。
2入力ゲートだけでCLA作れるし、2入力ゲートだけのRCAより速いよ。

780 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 09:14:13.64 ID:93rRyCwBa.net]
そりゃ多入力ゲートが2入力で模倣できるって言ってるだけでは

781 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 09:22:46.42 ID:MNOQNbTnM.net]
同じ入力数に制約しても速いって言ってんの

782 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 10:49:53.96 ID:klJ/NeRW0.net]
マルチエミッタって、スイッチング速いんだっけ?

783 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:02:58.65 ID:BFOSMSUh0.net]
スレチですみません
ここの人達は「プログラム」と聞いたときにどちらを思い浮かべますか?

* バイナリ
* コードが書かれたファイル
* コード

784 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:05:55.53 ID:klJ/NeRW0.net]
ROMにプログラム(書込)するのはバイナリ



785 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:08:13.51 ID:BFOSMSUh0.net]
>>784
やはりバイナリですよね
プログラム=バイナリという理解で合ってますよね

786 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:18:25.37 ID:y8y8TCfK0.net]
はい
あなたの考えは一切の曇り無く隅々まで正しいです
なのであなたの理解が最も正しいです
それについてわたくしどもは一切口出しすべきことはございません

あなたこそが正しいです

787 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:27:35.81 ID:BFOSMSUh0.net]
>>786
しかし辞書にはプログラムは問題解決の手順を特定の言語書いたものとあったので、
そう考えるとプログラムはバイナリを内包するという捉え方の方が正しいですよね
あと>>784さんはプログラムを動詞として使ってますが、それも使い方としては一般的なんですよね

プログラミングは10年以上やっているんですが、いまさらになってプログラムの意味を調べていて……
プログラムの意味をなんとなく理解してたのがわかって、こんな質問してしまってるんですが

788 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:36:27.21 ID:IwSB/YRzx.net]
>>787
どうやら貴方はプログラムより先に国語を勉強したほうが良いようだ。

789 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:37:37.41 ID:y8y8TCfK0.net]
ンなことカンケーなしに「俺はこう思ってる」「正解をくれ」を最初の>>783に書けばいいじゃん
なんでお前のお気持ちを察しなきゃいけないワケ
後出しジャンケンのコミュニケーション不全の物体だからマンセー要員しか求めてない

「どちらを思い浮かべますか?」と聞いてるんだから、
オレが思い浮かべるだけなら正解も不正解もない、
なのにいきなり「合ってる」とか言いだすとと値踏みされてるから不快だ

なんでお前なんかに正誤判定されなきゃいけないの
正解を求めている旨を最初>>783に書いてないからコミュニケーション不全だ

一見自由そうに見えるアンケートを取っておいて、それが合格か不合格かテメー独自のお気持ちで決めて人間を値踏みする、
その思考経路がアレすぎ

790 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:43:27.73 ID:BFOSMSUh0.net]
アンケート取ったのはどっちが一般的なのか知りたかったからですよ
そんなにカッカしないでください

一般的かどうかに私の主観は関係ないでしょ?

791 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:44:53.75 ID:Tl4mZNhI0.net]
一連の処理(命令)を書いたものがプログラムだろ
それを書く作業がプログラミングだろ
何が疑問なのかよくわからん

792 名前:デフォルトの名無しさん [2019/07/26(金) 13:48:17.76 ID:jd9kxs4Ca.net]
>>783
テレビ番組表

793 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:59:21.82 ID:BFOSMSUh0.net]
>>791
そうなんですが、プログラムって言葉がけっこう色んな意味で使われていて、調べていると混乱するんですよね……

794 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 13:59:36.19 ID:klJ/NeRW0.net]
>>789
同感

辞書って言われて正直少しムッとした
ちなみに俺はその手の辞書サイトの間違いを指摘して訂正させたことがある



795 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:09:18.87 ID:Tl4mZNhI0.net]
>>793
ITの分野で>>791以外の意味で使われることある?

796 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:20:35.08 ID:BFOSMSUh0.net]
>>794
別にここの人達の知識を疑ってるわけじゃないです
あと試すようなこともしてるつもりはないです

>>795
たとえばバイナリを指してプログラムと言うじゃないですか
あとアプリのこともプログラムと言いますし
プログラミングのことをプログラムするとも言うし

バイナリもアプリも「一連の処理(命令)を書いたもの」とすることはできますが、
なんか混乱するんです

797 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:22:29.61 ID:BFOSMSUh0.net]
あとプログラムとコードの違いもよくわかりません
コードだって命令を書いたものじゃないですか
それだとプログラム=コードということになりませんか?

798 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:34:16.48 ID:6botN/6Ha.net]
>>796
voidに秘密がありそうですよ

799 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:39:22.98 ID:BFOSMSUh0.net]
>>798
「プログラミング=プログラムを作ること」なら、日本語の命令を書くことはプログラミングなのかという疑問が生まれませんか?
人間に与える日本語の命令を書いた場合、それはプログラミングと言えるのでしょうか?

800 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:41:27.15 ID:Tl4mZNhI0.net]
バイナリもアプリもソースコードもプログラムを内包するってことだろ

801 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:45:23.07 ID:Tl4mZNhI0.net]
IT分野の話じゃないならスレチもいいとこだな
そんなの辞書引けば分かるだろ

802 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:49:00.72 ID:klJ/NeRW0.net]
>>796
再びムッとしたぞ
人にものを尋ねておいて何だその態度は
失言ではなく性格のようだな

803 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 14:51:29.48 ID:6botN/6Ha.net]
verilogはなんとプログラミング言語ではない

804 名前:デフォルトの名無しさん [2019/07/26(金) 14:59:57.10 ID:jqp1LWPO0.net]
>>778
単純なマルチバイブレータ連結のカウンタ回路考えたら
段数が多くなるほど速度が遅くなるのは当たり前だもんね!



805 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 15:15:37.98 ID:qJvv7Eyl0.net]
CPUの立場では、メモリ上に展開されている機械語のバイナリ列がプログラム
OSの立場では、実行ファイルがプログラム
C言語で記述する人にとっては、ソースファイル(郡)がプログラム

どのレイヤーの話かで意味が変わってくる可能性

806 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 15:15:43.78 ID:ueBQXQ8Kd.net]
ムッとしたってちょっと可愛い

807 名前:デフォルトの名無しさん [2019/07/26(金) 15:18:34.64 ID:jqp1LWPO0.net]
機械にとっては機械語だけで充分なのに
人間の理解にとって高級言語は必要最低限

認識のちがいとか感受性 によって見方はかわるんかな?w

808 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 15:25:46.61 ID:blDrgyi50.net]
用語なんて初めて使われた時の意味、定義化された時の意味、実際に使われてる場面での意味、
全部違ってることなんてザラでしょ。

809 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 15:56:34.19 ID:klJ/NeRW0.net]
>>806
わざとやってるんだよ
別にケンカがしたいわけじゃないから

810 名前:デフォルトの名無しさん [2019/07/26(金) 15:56:40.90 ID:jqp1LWPO0.net]
>>782
スイッチング特性ってどうなんだろ?
トランジスタのftに依存するんやない?

最近のトランジスタは1815なんかにくらべると桁がだいぶ違うw

811 名前:デフォルトの名無しさん [2019/07/26(金) 17:11:28.14 ID:/z54YWNEa.net]
>>799
言える。これだもの。

プログラム(program)
[名](スル)
1 ある物事の進行状態についての計画や予定。予定表。「新人教育のプログラム」
2 演劇・映画・音楽会・テレビなどの演目・曲目・番組。また、出演者の紹介、解説などを印刷した小冊子や番組表。「雨天によりプログラムが一部変更された」
3 コンピューターへ指示する、計算や仕事の手順を特定の言語や形式で書いたもの。また、それを作ること。

812 名前:デフォルトの名無しさん [2019/07/26(金) 17:16:39.70 ID:/z54YWNEa.net]
更に、日本語のコンピュータ用のプログラムというのもある。
昔々のピュータのBASICだとか、C言語でも関数名や変数名その他に漢字使えるのあったし、Javaとかでも識別子に漢字使えるし。

813 名前:デフォルトの名無しさん [2019/07/26(金) 17:19:19.65 ID:/z54YWNEa.net]
あ、ピュータじゃなくてぴゅう太だな。
https://ja.m.wikipedia.org/wiki/%E3%81%B4%E3%82%85%E3%81%86%E5%A4%AA

814 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 17:44:43.58 ID:6botN/6Ha.net]
utf8が普及して、今の方がむしろ普通に日本語使えるようになったと思うよ



815 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 18:04:58.65 ID:/WSqmbNMM.net]
だな、今時メジャーな環境で識別子に漢字とか使えない方が珍しい

816 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 18:20:14.54 ID:4cv+0ZCY0.net]
絵文字が普及して外人の作るプログラムがマルチバイト文字に完全に対応してきた
それまでは結構ダメダメだった

817 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 20:18:37.20 ID:PsTZ+gqN0.net]
識別子に漢字使えるのにスペースは全角だとコンパイルエラーなのがちょっと納得いかない

818 名前:デフォルトの名無しさん [2019/07/26(金) 20:49:01.65 ID:jqp1LWPO0.net]
0xE38080がUTFのスペース
0x20 がアスキーコード

いまやってみたら全然ちがうやんかw  

819 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 20:51:55.69 ID:XFvYTg6ka.net]
>>797
言葉の意味は文脈で異なる。
ある言葉と別の言葉の関係は一致か不一致かだけでなく、包含したり一部のみ重複したりもする。

820 名前: mailto:sage [2019/07/26(金) 21:21:44.32 ID:PuJwVoXL0.net]
>>779
>2入力ゲートだけでCLA作れるし
そんなことをしたら「素子数ばかり馬鹿みたいに食らって速度はリップルキャリーと同一の遅さ」で、なんのためのキャリールックアヘッドなのかわからない、という悲惨な結果になりませんか?

821 名前: mailto:sage [2019/07/26(金) 21:22:53.46 ID:PuJwVoXL0.net]
>>781
ありえないですね、キャリールックアヘッドは多入力で速度を稼ぐやりかたですよ、2入力に制限したらリップルキャリーと全然かわらないじゃないですか?

822 名前:デフォルトの名無しさん [2019/07/26(金) 21:24:29.66 ID:jqp1LWPO0.net]
キャッシュの容量とかパイプラインのちょうどいい区切りとか
まで考えてプログラミングなんてはっきり言ってやってませんw
手抜きでしょうか?

823 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 21:50:39.91 ID:OWnIAxmG0.net]
演算器の設計 - 加算器(Adder)
https://news.mynavi.jp/article/computer_architecture-70/

演算器の設計 - キャリールックアヘッドアダー(1)
https://news.mynavi.jp/article/computer_architecture-71/

演算器の設計 - キャリールックアヘッドアダー(2)
https://news.mynavi.jp/article/computer_architecture-72/

パラレルプリフィックスアダー
https://news.mynavi.jp/article/architecture-73/

パラレルプリフィックスアダー(2)
https://news.mynavi.jp/article/architecture-74/

パラレルプリフィックスアダー(3)
https://news.mynavi.jp/article/architecture-75/

Lingアダー
https://news.mynavi.jp/article/architecture-76/

アダーの実装に関して
https://news.mynavi.jp/article/architecture-77/

824 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 22:01:03.66 ID:rLMbRFKca.net]
>>821
いや、文字通り先読みが本質だと思いますよ
ゲートはいくつあってもいい



825 名前: mailto:sage [2019/07/26(金) 22:10:45.70 ID:PuJwVoXL0.net]
>>824
>文字通り先読みが本質だと思いますよ
薄っぺらい理解ですね
3 bit, 4 bit なりの アッダーを決めて、その MSB の和を作るのに必要な入力をじっと眺めて本質をつかんでください
単なる先読みではありませんよ

>ゲートはいくつあってもいい
速くなるならね
でも 2 入力論理演算だけで作ったキャリールックアヘッドは速くならない…

826 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 22:18:01.82 ID:rLMbRFKca.net]
>>825
そら、速い方がいいし回路もシンプルな方がいいですよ。
しかし、桁上がりを待ってるのと同じではないでしょうて。たとえ2入力ゲートを使ったとしても。

827 名前: mailto:sage [2019/07/26(金) 22:19:49.76 ID:PuJwVoXL0.net]
>>826
ご発言の意味が掴みきれません

828 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 22:29:27.26 ID:rLMbRFKca.net]
>>827
そりゃもう、読んでないですからね

829 名前:デフォルトの名無しさん [2019/07/26(金) 22:40:58.04 ID:jqp1LWPO0.net]
ディスクリートトランジスタでマルチバイブレータを組んでそれで
カウンタ組んだの思い出したw
動くと感動するよね!w

830 名前:デフォルトの名無しさん [2019/07/26(金) 22:54:34.12 ID:uEgiR7UH0.net]
現在はキャリー選択アダーに集約された

831 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 22:58:11.64 ID:rLMbRFKca.net]
分岐予測みたいなの?

832 名前:デフォルトの名無しさん [2019/07/26(金) 23:13:04.56 ID:jqp1LWPO0.net]
基本はマルチバイブレータでつくった順序回路w

なんだもんなぁw

833 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 23:28:36.00 ID:PBeJ5BeU0.net]
この言語は扱うものが多くて頭がオーバーフローします
たとえば正規表現は
int regcomp(regex_t *preg, const char *regex, int cflags)
int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
void regfree(regex_t *preg)

これを見る度に数がおおくて何書いているのか分からなくなる

834 名前:デフォルトの名無しさん [2019/07/26(金) 23:35:15.29 ID:jqp1LWPO0.net]
コンパイラつくってるんか?



835 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 23:41:52.05 ID:PBeJ5BeU0.net]
いいえ
コマンドライン引数の場合訳に正規表現がつかえると嬉しいのです

836 名前:デフォルトの名無しさん [2019/07/26(金) 23:48:25.73 ID:jqp1LWPO0.net]
>>835
たとえばどんな引数?

837 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 23:48:58.54 ID:Tl4mZNhI0.net]
JSのmatchみたいなラッパー書けばいいじゃん

838 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 00:05:22.95 ID:1cAkezH+0.net]
>>836
1~62の整数かt,today,n,nowかr,randomか無し
でした

perl ではこう書いてました
https://pastebin.com/txgSvNix

839 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 09:19:50.11 ID:zJ973H0i0.net]
>>821
お前まさか、16入力のANDを2入力ゲートで作れと言われたら、
縦に15個並べて順に接続するんじゃないだろうな。

840 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 09:22:21.76 ID:S4xnN4vA0.net]


841 名前: mailto:sage [2019/07/27(土) 09:52:34.76 ID:BeYdmmLD0.net]
>>839
普通にトーナメント方式に15個ならべますよ

842 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 10:00:34.00 ID:zJ973H0i0.net]
>>841
じゃ、RCAは遅延がO(n)で、CLAはN入力ゲートがあるならO(1)、2入力ゲートに制限してもO(log n)って気づくだろ。

843 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 10:08:46.04 ID:S4xnN4vA0.net]
qzは話通じてなさそうだな

844 名前: mailto:sage [2019/07/27(土) 10:24:42.39 ID:BeYdmmLD0.net]
>>842
そうか log n くらいには改善されるわけですね…てへぺろ



845 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 12:29:43.04 ID:x/Y2IYID0.net]
相変わらずの屑っぷり

846 名前:デフォルトの名無しさん [2019/07/27(土) 22:29:55.84 ID:7WTVPtxd0.net]
ゲート容量分の時間誤差は絶対生まれるかんな(´・ω・`)

847 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:01:09.08 ID:zJ973H0i0.net]
意味のわからん時間誤差とかいう用語、未定義で使うな

848 名前:デフォルトの名無しさん [2019/07/27(土) 23:32:10.40 ID:AqzO7oC20.net]
>>833
俺にはわかる。

慣れの問題では?
まあでも慣れるかどうかは個人差あるしこの言語で慣れねばならないなんてことはないので気にせず他の自分がわかりやすいと感じた言語使えばいい。

849 名前:デフォルトの名無しさん [2019/07/27(土) 23:44:22.86 ID:7WTVPtxd0.net]
>>848
それって正規表現をどう変換する関数なの?

850 名前:デフォルトの名無しさん mailto:sage [2019/07/27(土) 23:54:17.87 ID:p4Dr/Hvv0.net]
regexpをcompileするって概念はスクリプト言語ですら大抵存在するのに

NFAやらDFAやらだったり専用VMのバイトコードに落としたりと色々だろ

851 名前:デフォルトの名無しさん [2019/07/28(日) 00:01:11.58 ID:JTvgZUGV0.net]
>>849
最初のはパターンのコンパイル。次のは文字列とコンパイル済みパターンとのパターンマッチングをさせる関数。
詳細はマニュアルページ見るなりググるなりして調べてくれ。

852 名前:デフォルトの名無しさん [2019/07/28(日) 00:05:40.59 ID:JTvgZUGV0.net]
まあしかし>>838に書いてあるような内容なら正規表現使わないで単純な比較をするだけの方が速いしプログラムもわかりやすくなるような気がするなあ。

853 名前:デフォルトの名無しさん [2019/07/28(日) 00:58:43.04 ID:bTD+Zgyn0.net]
>>851
行ごとに文字列を細分化して それで当てはめていくって感じかな?
正規表現関係はけっこう頭抱えるもんね!

854 名前:デフォルトの名無しさん [2019/07/28(日) 01:00:17.13 ID:bTD+Zgyn0.net]
C言語のソースメモをオートインデントして整理しようとプログラムくんだけど
こういった関数つかって分岐かけていったほうが完璧なんかな?

でも時間すごい掛かりそうw



855 名前:蟻人間 mailto:sage [2019/07/28(日) 07:30:52.18 ID:S9RT+Rd/d.net]
>>854
そのプログラムを書く手間を自動化してみては?

856 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 07:43:00.67 ID:OCkB7AjV0.net]
unixのindentコマンドか
本末転倒を体現する変なやつ

857 名前:デフォルトの名無しさん [2019/07/28(日) 16:13:19.81 ID:kBOAQwNYa.net]
>>818
てか、Unicodeのスペースって沢山あるよ。
Wikipediaで「スペース」で検索して見てみな。

858 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 16:21:28.48 ID:QNzNEkbM0.net]
たくさんあるとなると「空白」の検索めんどくない?

859 名前:デフォルトの名無しさん [2019/07/28(日) 17:31:05.61 ID:bTD+Zgyn0.net]
>>856
何もオプションを付けないindentコマンドを実行すると
予想外のソースコードが出てくる可能性が高い とか書いてるひといるね!

インデントフォーマットって好みが人それぞれ違うから自分専用のもっててもええのかも?w

860 名前:デフォルトの名無しさん [2019/07/28(日) 19:58:58.85 ID:H3r8YGb9a.net]
>>858
そう。面倒だよ。

ま、しかし、wchar_t型使えるならiswspace()とか色々判定する関数が使える。
www.c-tipsref.com/reference/wctype.html

861 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 21:48:56.61 ID:CSar0obtd.net]
https://i.imgur.com/J5yu9wS.jpg

862 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 19:03:35.73 ID:6XKWfMZ+a.net]
>>861
グロ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<215KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef