C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://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言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 153
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fba-LL4R)
2019/08/17(土) 23:02:42.00ID:tN5mSQYg0492デフォルトの名無しさん (ワッチョイ 25e8-AIHr)
2019/12/06(金) 00:04:45.19ID:j6TI2G0x0 >>491
了解です。ありがとうございました。
了解です。ありがとうございました。
493デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 00:12:50.26ID:lGRN9wM80 >>492
ちゃんとコードを読んだら↓の部分はケアされてましたね。失礼しました。
> reallocの戻り値は古いポインタと異なるものになる保証はないはずなので、
ただ、reallocが成功したらfreeは呼ばなくていいのは間違いないと思います。
ちゃんとコードを読んだら↓の部分はケアされてましたね。失礼しました。
> reallocの戻り値は古いポインタと異なるものになる保証はないはずなので、
ただ、reallocが成功したらfreeは呼ばなくていいのは間違いないと思います。
494デフォルトの名無しさん (ワッチョイ 25e8-AIHr)
2019/12/06(金) 00:50:56.12ID:j6TI2G0x0 >>490 のreallocのコード返り値のポインタが不定を指しているので、使わないでください。
こっちを使ってください。
https://qiita.com/yakitori32/items/98256db666029fb5ebca
こっちを使ってください。
https://qiita.com/yakitori32/items/98256db666029fb5ebca
495デフォルトの名無しさん (ワッチョイ 25e8-AIHr)
2019/12/06(金) 00:55:18.93ID:j6TI2G0x0 >>493
了解です。ありがとうございます。
了解です。ありがとうございます。
496デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/06(金) 01:07:01.79ID:Rsc9FZ2h0 >>489
超高速ビットカウント
でググって出てくるページでちゃんと解説してくれてる
この手のよく見るやつはちょっとググれば解説見つかる
何を本質と置くかによるけど両者はそもそもアルゴリズムが違うのでその観点からなら違う
どちらのコードも結果は同じでも前者のほうが圧倒的に処理速度が早い
ビット数などが必要になる処理では速度が重要になるケースも多々あるので結果が同じでも後者は使い物にならない場合もある
超高速ビットカウント
でググって出てくるページでちゃんと解説してくれてる
この手のよく見るやつはちょっとググれば解説見つかる
何を本質と置くかによるけど両者はそもそもアルゴリズムが違うのでその観点からなら違う
どちらのコードも結果は同じでも前者のほうが圧倒的に処理速度が早い
ビット数などが必要になる処理では速度が重要になるケースも多々あるので結果が同じでも後者は使い物にならない場合もある
497デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 01:36:02.35ID:lGRN9wM80 >>496
レスありがとうございます。紹介していただいた記事を読ませていただき、大変勉強になりました。
ただ、>>489 の場合だと「ビットカウントするデータ列がある程度長い場合」には
当てはまらないため記事の前半の内容がアルゴリズムの基本になるとか思うのですが、
私が理解した範囲で記事の内容を参考にして関数を作成しても以下のようにしかできませんでした。
int popcount(unsigned long long x)
{
x = (x & 0x5555555555555555) + (x >> 1 & 0x5555555555555555);
x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333);
x = (x & 0x0f0f0f0f0f0f0f0f) + (x >> 4 & 0x0f0f0f0f0f0f0f0f);
x = (x & 0x00ff00ff00ff00ff) + (x >> 8 & 0x00ff00ff00ff00ff);
x = (x & 0x0000ffff0000ffff) + (x >> 16 & 0x0000ffff0000ffff);
return (int)((x & 0x00000000ffffffff) + (x >> 32 & 0x00000000ffffffff));
}
しかし >>489 の関数はこれを途中で打ち切って % 0xff をくっつけたような形になっており、
やはり完全な理解には至っていない状況です。
もし可能であれば、この部分についてもヒントをいただけると大変嬉しく思います。
たびたび申し訳ありませんが、どうぞよろしくお願いいたします。
レスありがとうございます。紹介していただいた記事を読ませていただき、大変勉強になりました。
ただ、>>489 の場合だと「ビットカウントするデータ列がある程度長い場合」には
当てはまらないため記事の前半の内容がアルゴリズムの基本になるとか思うのですが、
私が理解した範囲で記事の内容を参考にして関数を作成しても以下のようにしかできませんでした。
int popcount(unsigned long long x)
{
x = (x & 0x5555555555555555) + (x >> 1 & 0x5555555555555555);
x = (x & 0x3333333333333333) + (x >> 2 & 0x3333333333333333);
x = (x & 0x0f0f0f0f0f0f0f0f) + (x >> 4 & 0x0f0f0f0f0f0f0f0f);
x = (x & 0x00ff00ff00ff00ff) + (x >> 8 & 0x00ff00ff00ff00ff);
x = (x & 0x0000ffff0000ffff) + (x >> 16 & 0x0000ffff0000ffff);
return (int)((x & 0x00000000ffffffff) + (x >> 32 & 0x00000000ffffffff));
}
しかし >>489 の関数はこれを途中で打ち切って % 0xff をくっつけたような形になっており、
やはり完全な理解には至っていない状況です。
もし可能であれば、この部分についてもヒントをいただけると大変嬉しく思います。
たびたび申し訳ありませんが、どうぞよろしくお願いいたします。
498デフォルトの名無しさん (ラクッペ MMa1-sSJf)
2019/12/06(金) 04:41:11.15ID:hd4ipDIZM >>497
64ビット長のビットカウントの最大値はたかだか64なので8ビット(最大255)で表現できる
一方、64ビットデータの分割統治による畳み込み計算は1回目で2ビット×32組、2回目で4ビット×16組、3回目で8ビット×8組の結果が得られる
ビット数を求めるだけなら3回目の結果が得られた時点で8ビットの最大数(255)で3回目の畳み込み結果の剰余を求めてやればそれぞれの組の重み(ビット数)が計算できる
(64を超えることはないことが明らかなので)
64ビット長のビットカウントの最大値はたかだか64なので8ビット(最大255)で表現できる
一方、64ビットデータの分割統治による畳み込み計算は1回目で2ビット×32組、2回目で4ビット×16組、3回目で8ビット×8組の結果が得られる
ビット数を求めるだけなら3回目の結果が得られた時点で8ビットの最大数(255)で3回目の畳み込み結果の剰余を求めてやればそれぞれの組の重み(ビット数)が計算できる
(64を超えることはないことが明らかなので)
499デフォルトの名無しさん (ラクッペ MMa1-sSJf)
2019/12/06(金) 04:45:05.84ID:hd4ipDIZM 訂正
それぞれの組の重みの総計(ビット数)
それぞれの組の重みの総計(ビット数)
500デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 05:11:25.02ID:lGRN9wM80 >>498
わかりやすいご説明どうもありがとうございます!ほぼ理解できたと思います。
たとえば十進数の123を十進数文字の最大値9で割った余りは
1+2+3と等しくなりますが、これと同じ原理ということですよね?
ただよくよく考えてみると、そもそも十進数の各桁の合計を9で割った余りが
元の数を9で割った余りと等しくなることについても
お恥ずかしながら豆知識として知っているだけで原理を理解できていませんでした。
ただこれに関してはもはやC言語ではなく算数の問題なので、
その方面の解説サイトをググって勉強しようと思います。
なにはともあれ、回答してくださった皆様方、どうもありがとうございました。
>>495
読みやすい記事を提供してくださっているので、もう少しだけコメントさせてください。
現状だと、MemoryReAllocateを呼び出す側は関数の成否を確認するために
Mem->Memoryを覚えておく必要がありますので、MemoryReAllocateの引数に
参照渡しを使われるならMemoryReAllocateの戻り値はMomeryではなくて
成否を表すboolなどにされてはいかがでしょうか。
また、reallocは第一引数としてNULLを許容しているので
MemoryReAllocateは入力のMem->MemoryがNULLであっても
Mem->ElementSizeが正しい値であれば正常に動作しますが、
その一方でMemoryAllocateは失敗するとElementSizeがゼロの構造体を
返すので少しアンバランスかなと思いました。
あと、MemoryFreeがboolを返すのであれば、freeの前にNULLチェックを入れて
その結果をMemoryFreeの戻り値としてもいいかなと思いました。
(free関数自体はNULLを渡しても何もしないだけで問題は起こりませんが)
以上お目汚し失礼しました
わかりやすいご説明どうもありがとうございます!ほぼ理解できたと思います。
たとえば十進数の123を十進数文字の最大値9で割った余りは
1+2+3と等しくなりますが、これと同じ原理ということですよね?
ただよくよく考えてみると、そもそも十進数の各桁の合計を9で割った余りが
元の数を9で割った余りと等しくなることについても
お恥ずかしながら豆知識として知っているだけで原理を理解できていませんでした。
ただこれに関してはもはやC言語ではなく算数の問題なので、
その方面の解説サイトをググって勉強しようと思います。
なにはともあれ、回答してくださった皆様方、どうもありがとうございました。
>>495
読みやすい記事を提供してくださっているので、もう少しだけコメントさせてください。
現状だと、MemoryReAllocateを呼び出す側は関数の成否を確認するために
Mem->Memoryを覚えておく必要がありますので、MemoryReAllocateの引数に
参照渡しを使われるならMemoryReAllocateの戻り値はMomeryではなくて
成否を表すboolなどにされてはいかがでしょうか。
また、reallocは第一引数としてNULLを許容しているので
MemoryReAllocateは入力のMem->MemoryがNULLであっても
Mem->ElementSizeが正しい値であれば正常に動作しますが、
その一方でMemoryAllocateは失敗するとElementSizeがゼロの構造体を
返すので少しアンバランスかなと思いました。
あと、MemoryFreeがboolを返すのであれば、freeの前にNULLチェックを入れて
その結果をMemoryFreeの戻り値としてもいいかなと思いました。
(free関数自体はNULLを渡しても何もしないだけで問題は起こりませんが)
以上お目汚し失礼しました
501デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 05:15:04.10ID:PFBD6caPd 1回進むごとに
2bitずつに区切って、1の数を各2bitに入れる
4bitずつに区切って、1の数を各4bitに入れる
8bitずつに区切って、1の数を各8bitに入れる
...
となるので
>>489だと各バイトの1の合計が、各バイトに入る
各バイトなので256バイトのテーブルを使う方法もある
チープなCPUだとこちらの方が速い
逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
Icelake以降だとAVX512VBMIの命令を使って
超高速に64バイト分カウント出来る
2bitずつに区切って、1の数を各2bitに入れる
4bitずつに区切って、1の数を各4bitに入れる
8bitずつに区切って、1の数を各8bitに入れる
...
となるので
>>489だと各バイトの1の合計が、各バイトに入る
各バイトなので256バイトのテーブルを使う方法もある
チープなCPUだとこちらの方が速い
逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
Icelake以降だとAVX512VBMIの命令を使って
超高速に64バイト分カウント出来る
502デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 05:24:05.53ID:PFBD6caPd >>500前半
なんか違う
10進数の各桁に関しては
1000a+100b+10c+d
=999a+99b+9c+a+b+c+d
=9(111a+11b+c)+(a+b+c+d)
これを2進数でやると
9のところが1になるからあまり意味がない
なんか違う
10進数の各桁に関しては
1000a+100b+10c+d
=999a+99b+9c+a+b+c+d
=9(111a+11b+c)+(a+b+c+d)
これを2進数でやると
9のところが1になるからあまり意味がない
503デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 05:33:31.46ID:PFBD6caPd 分割統治っていうより
レジスタ内の桁数を使ってSIMD演算してるって感じ
01020304 + 02040608
2桁ずつの4個の足し算になってるでしょ?
レジスタ内の桁数を使ってSIMD演算してるって感じ
01020304 + 02040608
2桁ずつの4個の足し算になってるでしょ?
504デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 05:47:57.81ID:PFBD6caPd vpsrld
vpermb
vpermb
vpaddb
AVX512VBMIを使うと
レジスタに値がある状態で
4命令で64バイト分
vpermb
vpermb
vpaddb
AVX512VBMIを使うと
レジスタに値がある状態で
4命令で64バイト分
505デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 05:56:22.53ID:lGRN9wM80 >>501 >>504
レスありがとうございます。
> 各バイトなので256バイトのテーブルを使う方法もある
確かにある程度のビット幅ごとにテーブルを使って計算する方法は
シンプルですが効果が高そうですね。
> 逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
> 4命令で64バイト分
勉強になります。本当に速さが必要ならCPU自体の理解から始めるべきなんですね。
このあたりのハードウェアの違いは標準ライブラリ関数が吸収してくれると最高なのですがw
>>502
10進数の話の数式どうもありがとうございます!大変勉強になりました。
そうすると、>>489 の popcount の最後にやっているのは
2進数というか0x100進数で、
0x1000000*a+0x10000f*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x01010x*a+0x0101*b+c)+(a+b+c+d)
ということになると思うのですがいかがでしょうか。
レスありがとうございます。
> 各バイトなので256バイトのテーブルを使う方法もある
確かにある程度のビット幅ごとにテーブルを使って計算する方法は
シンプルですが効果が高そうですね。
> 逆にリッチなCPUだと数える命令が最初から備わってたりするしベクタ化も可能
> 4命令で64バイト分
勉強になります。本当に速さが必要ならCPU自体の理解から始めるべきなんですね。
このあたりのハードウェアの違いは標準ライブラリ関数が吸収してくれると最高なのですがw
>>502
10進数の話の数式どうもありがとうございます!大変勉強になりました。
そうすると、>>489 の popcount の最後にやっているのは
2進数というか0x100進数で、
0x1000000*a+0x10000f*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x01010x*a+0x0101*b+c)+(a+b+c+d)
ということになると思うのですがいかがでしょうか。
506デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 05:58:37.54ID:lGRN9wM80 >>505 の数式が変でした。正しくは以下のとおりです。失礼しました。
0x1000000*a+0x10000*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x010101x*a+0x0101*b+c)+(a+b+c+d)
0x1000000*a+0x10000*b+0x100*c+d
=0xffffff*a+0xffff*b+0xff*c+a+b+c+d
=0xff*(0x010101x*a+0x0101*b+c)+(a+b+c+d)
507デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 06:20:08.91ID:PFBD6caPd 最後の % 0xff を見てなかった
なので各バイトの1の個数と勘違いしてました
>>506はその通り
%は、除算命令を使うと遅いので
コンパイラは
0x0101010101010101
との乗算とシフトに置き換えそうです
PCの64bit環境だとPOPCNT命令がそのまま1命令
Icelake以降だとVPOPCNTQで8個を1命令
で出来ます
なので各バイトの1の個数と勘違いしてました
>>506はその通り
%は、除算命令を使うと遅いので
コンパイラは
0x0101010101010101
との乗算とシフトに置き換えそうです
PCの64bit環境だとPOPCNT命令がそのまま1命令
Icelake以降だとVPOPCNTQで8個を1命令
で出来ます
508デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 06:24:24.02ID:PFBD6caPd x % 0xff
よりは
x * 0x0101010101010101 >> 56 & 0xff
の方が直接的でコンパイラを頼らない記述でしょう
よりは
x * 0x0101010101010101 >> 56 & 0xff
の方が直接的でコンパイラを頼らない記述でしょう
509デフォルトの名無しさん (ラクッペ MMa1-sSJf)
2019/12/06(金) 06:34:20.70ID:hd4ipDIZM それだと
剰余 x % 0xff
ではなくて
商 x / 0xff
剰余 x % 0xff
ではなくて
商 x / 0xff
510デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 06:36:33.62ID:PFBD6caPd >>508 で大丈夫
乗算の筆算を考えてみよう
乗算の筆算を考えてみよう
511デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 06:37:31.16ID:lGRN9wM80 >>507-508
レスありがとうございます。
> x % 0xff
> よりは
> x * 0x0101010101010101 >> 56 & 0xff
> の方が直接的でコンパイラを頼らない記述でしょう
コンパイラの最適化によって一行目が三行目に
置き換えられる可能性があるということですか!?
難しそうですがちょっと考えてみたいと思います。
> PCの64bit環境だとPOPCNT命令がそのまま1命令
> Icelake以降だとVPOPCNTQで8個を1命令
本当に速度を求めるならCPUの命令を直接使えということですね。
覚えておきます。
レスありがとうございます。
> x % 0xff
> よりは
> x * 0x0101010101010101 >> 56 & 0xff
> の方が直接的でコンパイラを頼らない記述でしょう
コンパイラの最適化によって一行目が三行目に
置き換えられる可能性があるということですか!?
難しそうですがちょっと考えてみたいと思います。
> PCの64bit環境だとPOPCNT命令がそのまま1命令
> Icelake以降だとVPOPCNTQで8個を1命令
本当に速度を求めるならCPUの命令を直接使えということですね。
覚えておきます。
512デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 06:42:08.81ID:PFBD6caPd513デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 06:54:43.75ID:lGRN9wM80 >>512
ありがとうございます。そのようにしたいと思います。
ご親切に甘えてしまい申し訳ないのですが、
もう一つ質問させてください。今、
@ = x % 0xff
と
A = x * 0x0101010101010101 >> 56 & 0xff
について考えていたのですが、
x = 0xff のとき、
@ = 0x00, A = 0xffのように、別の値になりませんか?
これは、どこか書き間違いがあるとういことでしょうか。
それとも、この違いは今回の用途では問題にならないということでしょうか。
ありがとうございます。そのようにしたいと思います。
ご親切に甘えてしまい申し訳ないのですが、
もう一つ質問させてください。今、
@ = x % 0xff
と
A = x * 0x0101010101010101 >> 56 & 0xff
について考えていたのですが、
x = 0xff のとき、
@ = 0x00, A = 0xffのように、別の値になりませんか?
これは、どこか書き間違いがあるとういことでしょうか。
それとも、この違いは今回の用途では問題にならないということでしょうか。
514デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 06:57:32.55ID:lGRN9wM80515デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 06:57:55.91ID:PFBD6caPd 除算命令、
Skylakeで最大90クロックだそうで...
簡単な命令だと1クロックで3〜4個実行出来る事を考えると劇遅ですね
Icelakeだと18クロックなので
改善されてるみたい
Skylakeで最大90クロックだそうで...
簡単な命令だと1クロックで3〜4個実行出来る事を考えると劇遅ですね
Icelakeだと18クロックなので
改善されてるみたい
516デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 07:06:52.23ID:lGRN9wM80 >>515
> 除算命令、
> Skylakeで最大90クロックだそうで...
なんと!しかも、「最大」という表現が付くんですね。
つまり、ただの数値計算なのに
クロックの数がデータに依存する可能があるということ…?
> 除算命令、
> Skylakeで最大90クロックだそうで...
なんと!しかも、「最大」という表現が付くんですね。
つまり、ただの数値計算なのに
クロックの数がデータに依存する可能があるということ…?
517デフォルトの名無しさん (スプッッ Sd03-FAUo)
2019/12/06(金) 07:12:58.28ID:PFBD6caPd >>516
除算命令の実行時間はデータに依存します
内部的にループしてるようなものなので
SIMDの除算は多分一定
Icelakeももしかしたら一定かもしれません
SIMD乗算も非常に小さな値だと遅い事があったような
除算命令の実行時間はデータに依存します
内部的にループしてるようなものなので
SIMDの除算は多分一定
Icelakeももしかしたら一定かもしれません
SIMD乗算も非常に小さな値だと遅い事があったような
518デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 07:35:33.29ID:lGRN9wM80519デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/06(金) 07:55:08.53ID:DDupnuWl0 https://ja.m.wikipedia.org/wiki/%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0
ここの「性能問題」参照
浮動小数点演算の話ですので今回は関係ないです
ここの「性能問題」参照
浮動小数点演算の話ですので今回は関係ないです
520デフォルトの名無しさん (ワッチョイ 4dda-vpIn)
2019/12/06(金) 07:59:35.87ID:/1U5BHO/0 そりゃ並列処理できるような相互依存性の低い大量のデータでもあるならともかく
小さなデータ塊対象だとパック化やアンパック化する手間が掛かる分だけ
総合的にはSIMD使った方が遅くなるだろ
馬鹿となんとかは使いようと言うだろ
小さなデータ塊対象だとパック化やアンパック化する手間が掛かる分だけ
総合的にはSIMD使った方が遅くなるだろ
馬鹿となんとかは使いようと言うだろ
521デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/06(金) 08:10:43.32ID:DDupnuWl0 どこの誤爆か気になる
522デフォルトの名無しさん (スッップ Sd43-FAUo)
2019/12/06(金) 12:19:42.67ID:PPEOwhLkd523デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 15:17:31.13ID:lGRN9wM80 >>519
勉強になります。
非正規化数という言葉はちらっと聞いたことはありますが、こういうデメリットもあるんですね。
そして、それでも非正規化数を使うのは
「浮動小数点数の加減算は決して『アンダーフローによるゼロ』にならない」
という理由があるのだということも初めて知り、とても興味深く感じました。
ところで、ビット演算に関してもう一つ相談させていただいてもよろしいでしょうか。
動的メモリ再確保のコストを減らすために確保するメモリのサイズを必ず 2ⁿ-1 の形にしたくて、
与えられた数を下回らない最小の 2ⁿ-1 の値の値を返すような関数を作って使っています。
つまり引数xを2進数で表したときの一番上位の1以下をすべて1に置き換えるような関数で、
具体的には以下のように記述しています。
int fill_lower_bits(int x)
{
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
return x;
}
この関数は割と使用頻度が高いので、PCの64bit環境にPOPCNT命令があるように、
もしfill_lower_bitsと似た振る舞いをする命令があれば名前を教えていただけないでしょうか。
(続く)
勉強になります。
非正規化数という言葉はちらっと聞いたことはありますが、こういうデメリットもあるんですね。
そして、それでも非正規化数を使うのは
「浮動小数点数の加減算は決して『アンダーフローによるゼロ』にならない」
という理由があるのだということも初めて知り、とても興味深く感じました。
ところで、ビット演算に関してもう一つ相談させていただいてもよろしいでしょうか。
動的メモリ再確保のコストを減らすために確保するメモリのサイズを必ず 2ⁿ-1 の形にしたくて、
与えられた数を下回らない最小の 2ⁿ-1 の値の値を返すような関数を作って使っています。
つまり引数xを2進数で表したときの一番上位の1以下をすべて1に置き換えるような関数で、
具体的には以下のように記述しています。
int fill_lower_bits(int x)
{
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
return x;
}
この関数は割と使用頻度が高いので、PCの64bit環境にPOPCNT命令があるように、
もしfill_lower_bitsと似た振る舞いをする命令があれば名前を教えていただけないでしょうか。
(続く)
524デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 15:18:25.28ID:lGRN9wM80 (続き)
また、こちらはあまり使い道は思いつきませんが、
int fill_higher_bits(int x)
{
x |= x << 1;
x |= x << 2;
x |= x << 4;
x |= x << 8;
x |= x << 16;
return x;
}
という関数を考えることもできて、これなら
int fill_higher_bits(int x)
{
return -(x & -x);
}
のように簡単な書き方に変更できます。
fill_lower_bitsについてもこういうテクニックがあればいいなと思っているのですが、
もし何かご存知であれば教えていただけると嬉しいです。
また、こちらはあまり使い道は思いつきませんが、
int fill_higher_bits(int x)
{
x |= x << 1;
x |= x << 2;
x |= x << 4;
x |= x << 8;
x |= x << 16;
return x;
}
という関数を考えることもできて、これなら
int fill_higher_bits(int x)
{
return -(x & -x);
}
のように簡単な書き方に変更できます。
fill_lower_bitsについてもこういうテクニックがあればいいなと思っているのですが、
もし何かご存知であれば教えていただけると嬉しいです。
525デフォルトの名無しさん (スッップ Sd43-FAUo)
2019/12/06(金) 19:09:08.62ID:PPEOwhLkd526デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 19:33:49.52ID:lGRN9wM80 >>525
何度も本当にどうもありがとうございます。大変勉強になります。
> _BitScanReverse64
こんな命令があったとは!
この名前で検索したら、今まで知らなかった興味深いページがたくさんヒットしました。
ReverseじゃなくてForwardというのもあるみたいですが、
Forwardの方はマイナスを使う方法でも十分高速になりそうなので、
どちらが速いか検証してみようと思います。
> x | -x
確かに…。
ド・モルガンの法則で ~(x & ~x) が ~x & x に書き換えられるのはすぐに分かるのですが、
もしかしてそれと同じことがマイナスでもできるのでしょうか。
-x が ~x + 1 と同じになることは理解しているので、ちょっと考えてみたいと思います。
何度も本当にどうもありがとうございます。大変勉強になります。
> _BitScanReverse64
こんな命令があったとは!
この名前で検索したら、今まで知らなかった興味深いページがたくさんヒットしました。
ReverseじゃなくてForwardというのもあるみたいですが、
Forwardの方はマイナスを使う方法でも十分高速になりそうなので、
どちらが速いか検証してみようと思います。
> x | -x
確かに…。
ド・モルガンの法則で ~(x & ~x) が ~x & x に書き換えられるのはすぐに分かるのですが、
もしかしてそれと同じことがマイナスでもできるのでしょうか。
-x が ~x + 1 と同じになることは理解しているので、ちょっと考えてみたいと思います。
527デフォルトの名無しさん (ワッチョイ 23b9-QX1D)
2019/12/06(金) 19:53:04.32ID:lGRN9wM80528デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/06(金) 20:51:24.53ID:DDupnuWl0 自分で頑張って探すんです
~x
x-1
-x
&
|
^
これらを組み合わせれば
一番右のビット関連がいろいろと出来ます
???10000
に対して
11110000
11100000
00010000
00011111
00001111
これらを得る最小回数の演算を考えてみてください
~x
x-1
-x
&
|
^
これらを組み合わせれば
一番右のビット関連がいろいろと出来ます
???10000
に対して
11110000
11100000
00010000
00011111
00001111
これらを得る最小回数の演算を考えてみてください
529デフォルトの名無しさん (ワッチョイ a501-gDf/)
2019/12/06(金) 21:03:52.43ID:vzfmAUcv0 ド・モルガンと似た問題で、
「君たち2人は注意されないならば、君たち2人は私語を止めない」
の対偶、
「君たち2人が私語を止めるならば、君たち2人は注意される」
って矛盾にちょっと考えてしまったわ。
「君たち2人は注意されないならば、君たち2人は私語を止めない」
の対偶、
「君たち2人が私語を止めるならば、君たち2人は注意される」
って矛盾にちょっと考えてしまったわ。
530デフォルトの名無しさん (ワッチョイ 2339-V35x)
2019/12/06(金) 21:07:30.59ID:BprTHIND0 x 注意される
o 注意された
o 注意された
531デフォルトの名無しさん (ワッチョイ a501-gDf/)
2019/12/06(金) 21:15:00.21ID:vzfmAUcv0 >>530
さすが、その通り。
さすが、その通り。
532デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/06(金) 23:44:25.67ID:DDupnuWl0 >>523
メモリ確保やアクセスの時間に比べれば
サイズ計算の時間は無視出来る
ビット演算の趣味として楽しむ分には良いけど
普通にループでもパフォーマンスは変わらない
パフォーマンスが重要じゃないところ
(つまりほとんどの部分)は
移植性、見やすさ、工数、...
などが優先される
ということは知っておいた方が良いですね
メモリ確保やアクセスの時間に比べれば
サイズ計算の時間は無視出来る
ビット演算の趣味として楽しむ分には良いけど
普通にループでもパフォーマンスは変わらない
パフォーマンスが重要じゃないところ
(つまりほとんどの部分)は
移植性、見やすさ、工数、...
などが優先される
ということは知っておいた方が良いですね
533デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/06(金) 23:51:44.77ID:Rsc9FZ2h0 分野によってはループや比較による分岐は遅すぎて使えないなんてことままあるよ
534デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/07(土) 00:10:26.85ID:n8phrA6e0 >>523の話
535デフォルトの名無しさん (ラクッペ MMa1-sSJf)
2019/12/07(土) 00:10:27.55ID:4NjUP+TJM それは経験談?
それとも誰かからの受け売り?
それとも誰かからの受け売り?
536デフォルトの名無しさん (ワッチョイ e573-FAUo)
2019/12/07(土) 00:15:02.34ID:n8phrA6e0 動的メモリ再確保
のサイズ計算の話
オーダーnに対して係数の小さなオーダーlog nは無視して良い
って話
のサイズ計算の話
オーダーnに対して係数の小さなオーダーlog nは無視して良い
って話
537デフォルトの名無しさん (ワッチョイ 4dda-vpIn)
2019/12/07(土) 01:14:15.17ID:kGPNKNyL0 ちょっと前にスレで騒がれていたフーリエ変換に関する話題
50年来の信号処理に関する謎が解かれる、逆高速フーリエ変換がついに一般化
https://fabcross.jp/news/2019/20191206_fast-fourier-transform.html
50年来の信号処理に関する謎が解かれる、逆高速フーリエ変換がついに一般化
https://fabcross.jp/news/2019/20191206_fast-fourier-transform.html
538デフォルトの名無しさん (エムゾネ FF43-MVf8)
2019/12/07(土) 19:02:43.91ID:Tn5G8ZSlF 解明って言うんか?これ
539デフォルトの名無しさん (アークセー Sxdf-bz61)
2019/12/14(土) 01:27:42.96ID:TU6i1yGkx C言語というか、WindowsのCですが、
たとえば strcpyの lstrcpyと _tcscpyの違いは何なのでしょうか
前者は WindowsAPI、後者は VC++CRTという説明を見たのですがよくわからないのです
両者とも UNICODE(後者は_UNICODE) の有無で charとwchar_tを切り替えるようですが、どちらをどんな時に使用するのかが分かりません。
たとえば strcpyの lstrcpyと _tcscpyの違いは何なのでしょうか
前者は WindowsAPI、後者は VC++CRTという説明を見たのですがよくわからないのです
両者とも UNICODE(後者は_UNICODE) の有無で charとwchar_tを切り替えるようですが、どちらをどんな時に使用するのかが分かりません。
540デフォルトの名無しさん (ワッチョイ c612-wY8Q)
2019/12/14(土) 10:20:34.10ID:00Pm6Tju0 crtへの依存を減らせる分、常にlstrcpyを使えばいいと思うよ。lstrcpyは不正アクセスしたときに例外投げてくれるみたいだし。
自分なら依存減らす&安全性のためにstrncpyとwcsncpyを選ぶけど
自分なら依存減らす&安全性のためにstrncpyとwcsncpyを選ぶけど
541デフォルトの名無しさん (アークセー Sxdf-bz61)
2019/12/14(土) 23:23:03.56ID:ECY2395Ex >>540
ありがとうございます。
539です。
今後は気をつけようと思いますが、過去に書いたコードは何ともいたし難く…orz
なぜ先に lstrcpyを見つけなかった 2014年のオレ…
でも、内容が古いのかもしれませんが、ある記事によると CRTの依存を断ち切るのも容易ではないようで。。。
ありがとうございます。
539です。
今後は気をつけようと思いますが、過去に書いたコードは何ともいたし難く…orz
なぜ先に lstrcpyを見つけなかった 2014年のオレ…
でも、内容が古いのかもしれませんが、ある記事によると CRTの依存を断ち切るのも容易ではないようで。。。
542デフォルトの名無しさん (ワッチョイ 6261-drM2)
2019/12/15(日) 00:22:25.61ID:ay8KMh7A0 むしろlstrcpyなんて16bit時代から引きずってる過去の遺物なんじゃ?
今はlstrcpyも非推奨、代替のStringCchCopyはWindowsAPIの体だけどkernel32.dll等を呼び出すのではなくstrsafe.h内にコードが書いてある変わり種なのでtchar.h系の_tcscpy_sでよくね?っていう
今はlstrcpyも非推奨、代替のStringCchCopyはWindowsAPIの体だけどkernel32.dll等を呼び出すのではなくstrsafe.h内にコードが書いてある変わり種なのでtchar.h系の_tcscpy_sでよくね?っていう
543デフォルトの名無しさん (ワッチョイ 62ad-xO71)
2019/12/15(日) 00:32:33.51ID:YgrLaWOD0 MSのCは独自色が過ぎる
544デフォルトの名無しさん (ワッチョイ 4209-X5Um)
2019/12/15(日) 09:51:20.97ID:Q+saMC6e0 そうか? 古くからMSCは「高いが安心」というポジションだったが
545デフォルトの名無しさん (ワイーワ2 FFfa-uKDx)
2019/12/15(日) 13:16:36.84ID:o9m7qUoDF546デフォルトの名無しさん (ワッチョイ ef46-2WMb)
2019/12/15(日) 14:57:55.02ID:AP8z1X7d0 何の変哲の無いコードを書いてコンパイラのバグが顕在化するMicrosoftのCが安心とは、茶がヘソを沸かす。
547デフォルトの名無しさん (ワッチョイ e7da-rL1a)
2019/12/15(日) 15:53:29.93ID:Rd0yTkco0 唯一のECMA-372対応コンパイラ
壮大なマッチポンプだが…
壮大なマッチポンプだが…
548デフォルトの名無しさん (ブーイモ MM13-R69Q)
2019/12/15(日) 23:21:27.87ID:z0zgGhJDM そもそもCはUNIXの為に作られた言語だから
UNIX系以外のOSで使うと齟齬が出るよね
UNIX系以外のOSで使うと齟齬が出るよね
549デフォルトの名無しさん (ワッチョイ e202-F3ta)
2019/12/16(月) 09:15:32.91ID:poPvuM4I0 何言ってんだこのバカ
550デフォルトの名無しさん (スッップ Sd02-IG0a)
2019/12/16(月) 09:20:02.47ID:wmZohWX5d せいぜいnとCR LFの齟齬くらいだね
551デフォルトの名無しさん (ワッチョイ e7da-rL1a)
2019/12/16(月) 09:40:49.35ID:0Jl4Gkqp0 それはテキストファイルのコードの違いというだけであって言語の仕様そのものとは直接関係ない
552デフォルトの名無しさん (ワッチョイ 9769-kui+)
2019/12/16(月) 10:23:00.62ID:1+8Fi0A+0 OSを記述しやすく意図されて言語という認識だが
UNIXに絞って特化された部分って何だろう?
UNIXに絞って特化された部分って何だろう?
553デフォルトの名無しさん (ブーイモ MM13-RJaD)
2019/12/16(月) 10:34:38.41ID:WErHXUGxM テキストファイルといえば
歴史上どっかの段階で文字列操作や汎用IO関数を捨て専用のもちっと使いやすい内蔵スクリプト言語に任せ
どうしても処理速度を求めるマは自作、非標準ライブラリで配列イジクール形にしたらよかったのにね
システムコールの頻度とか毎度読み解く指定子とかで標準ライブラリも爆速ってほどじゃないしー
printfのうじゃうじゃ増える非互換指定子とか似た使い分け迷う関数の増殖とかを防げたろうに
歴史上どっかの段階で文字列操作や汎用IO関数を捨て専用のもちっと使いやすい内蔵スクリプト言語に任せ
どうしても処理速度を求めるマは自作、非標準ライブラリで配列イジクール形にしたらよかったのにね
システムコールの頻度とか毎度読み解く指定子とかで標準ライブラリも爆速ってほどじゃないしー
printfのうじゃうじゃ増える非互換指定子とか似た使い分け迷う関数の増殖とかを防げたろうに
554デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/16(月) 11:27:10.48ID:LjjtFzBx0 せっかくライブラリとして言語の外に出てるのに、
なんでスクリプト言語なんか内蔵しなきゃいかんの。
なんでスクリプト言語なんか内蔵しなきゃいかんの。
555デフォルトの名無しさん (ドコグロ MM7a-ECc1)
2019/12/16(月) 12:29:48.70ID:3ha1TSe5M >>552
creat()のモード指定が8進数で書ける
creat()のモード指定が8進数で書ける
556デフォルトの名無しさん (ワッチョイ 4b5f-EbeN)
2019/12/16(月) 13:05:02.49ID:ErLMiOjL0 file の lock とかか >>552
557デフォルトの名無しさん (ワッチョイ 367c-xO71)
2019/12/16(月) 13:12:27.77ID:3bH+pT+k0558デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/16(月) 13:19:15.38ID:LjjtFzBx0 たしかにunix系以外で8進数って使わないような気もする。
559デフォルトの名無しさん (ブーイモ MM13-0eUy)
2019/12/16(月) 13:21:15.05ID:k2txnuEDM Cは文字列をヌル終端するのが「ほぼ」前提になってるよね。
もしそれ以外の文字列表現を使うつもりだったら、
文字列専用の型を用意していたし、ポインタより配列を重視していたはず。
もしそれ以外の文字列表現を使うつもりだったら、
文字列専用の型を用意していたし、ポインタより配列を重視していたはず。
560デフォルトの名無しさん (ワッチョイ 4b5f-EbeN)
2019/12/16(月) 13:22:41.90ID:ErLMiOjL0 >>557
おまいがOSに特化したとか言い出したんじゃないのか
おまいがOSに特化したとか言い出したんじゃないのか
561デフォルトの名無しさん (ドコグロ MM7a-ECc1)
2019/12/16(月) 13:23:58.45ID:3ha1TSe5M >>557
違う、8進数で書けると言う「言語仕様」の話
違う、8進数で書けると言う「言語仕様」の話
562デフォルトの名無しさん (ワッチョイ 367c-xO71)
2019/12/16(月) 13:30:01.62ID:3bH+pT+k0563デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/16(月) 13:32:32.25ID:LjjtFzBx0 >>562
8進数で書くのがchmod互換で直感的なんだべ
8進数で書くのがchmod互換で直感的なんだべ
564デフォルトの名無しさん (ドコグロ MM7a-ECc1)
2019/12/16(月) 14:13:38.79ID:3ha1TSe5M >>562
> 建前としては「ちゃんと定数使え」じゃない?
建前はともかく0777とか0755とかバンバン書かれてるし…
とまで書いてなんだけど、ちょっとググったらどうも8進数はC言語発祥じゃなくてB言語でも使えたみたいw
PDPシリーズは触ったことないからよくわからんけどHPのミニコンは命令コードが3bit単位に区切られて表記されてた
ブートローダーは手入力してて16個並んでるスイッチでアドレスや命令コードをセットするんだけど見ての通り3bit単位に区切ってある
もう記憶があやふやだけどアセンブラとかも8進表記ができたような気がする
http://www.hpmuseum.net/images/2108A-37.jpg
多分PDPも似たような感じだったんじゃないかと思う
なので8進数云々はあまり関係なかったわ、すまん
> 建前としては「ちゃんと定数使え」じゃない?
建前はともかく0777とか0755とかバンバン書かれてるし…
とまで書いてなんだけど、ちょっとググったらどうも8進数はC言語発祥じゃなくてB言語でも使えたみたいw
PDPシリーズは触ったことないからよくわからんけどHPのミニコンは命令コードが3bit単位に区切られて表記されてた
ブートローダーは手入力してて16個並んでるスイッチでアドレスや命令コードをセットするんだけど見ての通り3bit単位に区切ってある
もう記憶があやふやだけどアセンブラとかも8進表記ができたような気がする
http://www.hpmuseum.net/images/2108A-37.jpg
多分PDPも似たような感じだったんじゃないかと思う
なので8進数云々はあまり関係なかったわ、すまん
565デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/16(月) 19:57:33.47ID:xr9KOlE00 お前らも8進数よく使うだろ
0とか
0とか
566デフォルトの名無しさん (ワッチョイ 5701-kui+)
2019/12/16(月) 20:00:10.61ID:RwgS0BCD0 ソースの見栄えを気にして桁そろえに スペース使わずに 0 を補うんですね
567デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/16(月) 20:01:38.57ID:xr9KOlE00 やったことあるヤツいるよな?
いやそうじゃなくて
ただの0
いやそうじゃなくて
ただの0
568蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-jJp1)
2019/12/16(月) 20:18:50.99ID:8JsSimFSd 017は頭に0があるから、C/C++では8進数として扱う。ただのゼロもリテラルの分類としては8進数。
569デフォルトの名無しさん (ブーイモ MM13-ScWb)
2019/12/16(月) 20:23:36.65ID:KhG8vsdXM 0リテラルは8進だったのか…
570デフォルトの名無しさん (ブーイモ MM13-ScWb)
2019/12/16(月) 20:31:05.71ID:KhG8vsdXM (6.4.4.1) octal-constant:
0
octal-constant octal-digit
まじか
でも8進だからなんだっていう
0
octal-constant octal-digit
まじか
でも8進だからなんだっていう
571デフォルトの名無しさん (ワッチョイ ef46-9Tqg)
2019/12/16(月) 21:43:34.71ID:G86pu5OQ0 16歳の僕でも酒が飲めるぞ。
飲める飲める飲めるぞ酒が飲めるぞ。
飲める飲める飲めるぞ酒が飲めるぞ。
572デフォルトの名無しさん (ワッチョイ a363-aD55)
2019/12/16(月) 21:43:53.10ID:myVu/Iud0 え?割と有名な話では?
573デフォルトの名無しさん (ワッチョイ 421e-JUn5)
2019/12/16(月) 22:13:01.15ID:AI1GDY0I0 012 月はハロウィンで酒が飲めるぞ
飲める飲める飲めるぞ酒が飲めるぞ
飲める飲める飲めるぞ酒が飲めるぞ
574デフォルトの名無しさん (アークセー Sxdf-bz61)
2019/12/16(月) 22:28:43.33ID:SRFHZZ1hx >>571
それは10進数でしょ
それは10進数でしょ
575デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/16(月) 22:44:38.36ID:xr9KOlE00 いや
14進数とか16進数だろ
14進数とか16進数だろ
576デフォルトの名無しさん (ワッチョイ 0e8c-r0mJ)
2019/12/17(火) 05:16:47.62ID:YPw71Sxa0 8進数いらない
577デフォルトの名無しさん (スッップ Sd02-IG0a)
2019/12/17(火) 07:03:39.66ID:KzMqUd+td Cにも0bと桁区切り欲しい
578デフォルトの名無しさん (ワッチョイ fb73-xO71)
2019/12/17(火) 11:16:49.78ID:C7XZiRB60 512色カラーで使った。
579デフォルトの名無しさん (アウウィフ FF3b-EbeN)
2019/12/17(火) 12:28:51.79ID:rApV4krMF int main()
{
return 0;
}
8進数ですほんとうにありがとうございました
{
return 0;
}
8進数ですほんとうにありがとうございました
580デフォルトの名無しさん (ワッチョイ af1d-3siJ)
2019/12/17(火) 18:33:08.01ID:x9hYOthl0 MinGWとUbuntuはどっちがいいですか?
581デフォルトの名無しさん (ワッチョイ e7da-rL1a)
2019/12/17(火) 19:26:43.19ID:PKHU1E440 何が?
582デフォルトの名無しさん (ワッチョイ 7735-c7hN)
2019/12/17(火) 23:43:40.20ID:FF2dVpsc0 Ubuntu
583デフォルトの名無しさん (ワッチョイ 62ad-xO71)
2019/12/17(火) 23:50:56.66ID:6pfYPcmc0 2進数表記が欲しい
584デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/18(水) 00:13:36.84ID:i+6d3gEf0 16進小数リテラルが欲しい
585デフォルトの名無しさん (ワッチョイ 0663-xO71)
2019/12/18(水) 00:16:26.43ID:AxZUQGgH0 >>584
加減乗除考えただけで頭痛くなりそうだ
加減乗除考えただけで頭痛くなりそうだ
586デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/18(水) 00:19:17.60ID:P8XWWN6i0 すんごく欲しいならプリプロセッサでも作ればいいんじゃね?
587デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/18(水) 00:19:24.08ID:i+6d3gEf0 人間が計算する必要は無いんだよ
588デフォルトの名無しさん (ワッチョイ 7773-2Nzf)
2019/12/18(水) 00:24:30.38ID:i+6d3gEf0589デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/18(水) 00:34:01.93ID:P8XWWN6i0 プリプロセッサ作って言語を拡張とか、昔はけっこうあったけどな。
590デフォルトの名無しさん (ワッチョイ 0663-xO71)
2019/12/18(水) 00:36:26.05ID:AxZUQGgH0 昔は結構あったはずのものが、今は残ってないのだろう
591デフォルトの名無しさん (ワッチョイ 0e16-kGA4)
2019/12/18(水) 00:39:48.29ID:P8XWWN6i0 まあそれほど必要がないなら別にいいんじゃね。
IDEしか使わないならそういうことはやりづらいだろうし。
IDEしか使わないならそういうことはやりづらいだろうし。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 気象庁・高市内閣「この後311級の地震の可能性があります。北海道〜関東の人は1週間は地震が来てもすぐ逃げられる格好をしてください」 [597533159]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- バリ島で万引きした高校生が叩かれているけどさ
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
