Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 12 13
次のページ(過去)
返信[55]
親投稿
結局トピック最初の疑問の答えは、2進数を扱うコンピュータ上として ・ビット列(2進数表現)の最上位ビットは負数扱い ・負数は2の補数で表現 ・32bit幅(2^32)でmodulo(割り算の余り)で表現 ・0付近で負数と正数が連続してる などなど、いろんな結果で -1 となるような負数を表現できるけど、 どれもみんなが書いているとおりの技術的や数学的な考えがあって、その結果が負数を表す条件になっているような解釈でいろんな正解があるという感じだと思うのです。 ※学校卒業すると正解は必ず1つではないことがたくさんあるのです。 ちなみに今のところ現代のコンピュータを扱う限り、メモリ上はビット(0か1か)であり2進数表現になるので、3進数以上の話題はそこまで気にしなくてもよかったりもするので、 もっと数学的に考えたいとか2進数以外のコンピュータ作るんだって人向けな感じです。
5そうだね
プレイ済み
返信[38]
親投稿
最近「BCD」もめっきり聞かないけど、BCDを拡張された文字コードの「EBCDIC」(えびしでぃっく)は一部の世界ではまだあるので、将来このへんのお仕事するなら歴史として知っておいても良いかも?(「全銀手順」とかそういうの) 10進数と2進数16進数以外の話題が出てるけど、実際の「ノイマン型コンピュータ」の世界じゃそれ以外の3進数などに変換することはまず無いけど、3進数コンピュータを作ったりエミュレータを作る場合には、さらにいろいろ研究すると楽しいかもです。 将来「量子コンピュータ」の世界に行くなら、2進数以外をいろいろと研究すると楽しいかもです。
1そうだね
プレイ済み
返信[37]
親投稿
技術情報は幅広くて、1つのことをちゃんと説明しようとすると、ここじゃ書き切れないことだらけだし、結果的に同じ知識に対しての別の考え方だったり、言い方が違うだけだったりなどいろいろなので、自分が理解しやすい考えでまずは理解するのがいいのかなと。 そのあとに新しい考え方を見かけて、最初に理解したのがちょっと間違ってると思っていたら新しい考え方をすれば理解も深まるはず。 人間は間違えるし、学校卒業してからも何かしらずっと勉強してるのでそれでいいと思うのです。
4そうだね
プレイ済み
返信[1]
親投稿
旧3DSで60fps(1/60sで処理完了)で安定しているゲームなら、30fps(処理1/60s+GLOAD 1/60s)にして毎フレームGLOADしてもいけそうな計算! 格闘ゲームみたいな大容量SPRITEでも実質GRPx2でいけそうな予感。
1そうだね
プレイ済み
返信[10]
親投稿
すばやさ順に全員が行動するなら、最大値を求めるのもそうだけど順番付けしないといけないので、プチコンの命令を使うだけではなく、自分で並び替え(「ソート」アルゴリズム)の処理をしないといけなかったりも。 すばやさ順に全員が行動するプログラムの作り方としてもいろいろあるけど、このターンに行動した人は最大値を求める計算からは対象外にする、ってやりかたもアリだったりします。 すばやさパラメータ用の配列とは別に「すばやさ計算用配列」にすばやさをコピーしておいて、 そこから最大値を求めて(同じ人がいればランダムなどでどっちか決めるななど)その人の配列番目から行動のパラメータをいろいろ使ってゲームの処理をして、 行動しおわったらその人の配列版目の「すばやさ計算用配列」に0を入れて、全員が0になったらターン終わり。 みたいな処理をすれば無理にソートしなくてもいけたりも。
6そうだね
プレイ済み
返信[22]
親投稿
「-2の31乗」じゃなくて「-(2の31乗)」に訂正で(細かいことだけど意味が違っちゃうので) 数学もそうだけど、あっちの説明がこうで、こっちの説明はこうだけど、結局は同じところにつながってる。 ってのは結構あるので、いろいろな方向から調べたり、いろんなこと調べたり、いろんな人の考え方を聞いたりして、自分なりの納得いくものを得るのがいい感じだったりします。 2の補数やマイナスのあらわし方などは、ほんとは古本屋さんにいって古そうなマイコンやZ80や8086あたりの本を見たほうが、実は難しそうで当時のBASIC始めた人向けにもわかりやすかったりするのもあったりするのです。(マイコンやCPUやメモリの考えもちゃんと説明されているから基本がつまってるのです)
5そうだね
プレイ済み
返信[21]
親投稿
ちなみに感触だけなら、アナログ時計の12を0としたので考えると感触だけわかるかも?(考え方だけの感触ね、しかも分は考えちゃだめ) 11時はマイナス1時になるし、、7時はマイナス5時になるし。 6時の次はマイナス5時になるので、&H7FFFFFFF から &H80000000 になってプラスからマイナスになっちゃうみたいな。 でも表記なら0時から11時までなので、&FFFFFFFF が -1 になっちゃうみたいな。
3そうだね
プレイ済み
返信[20]
親投稿
最初の&HFFFFFFFF=-1の話に戻ると「プチコンがそういうふうに扱ってるから」ということになってしまったりも。 プチコンは内部では2進数しか扱えないので、それをどうやって16進数で表記するか、どうやって10進数で表記するかなのです。 &HFFFFFFFF は16進数表記で、-1 は10進数表記。 2進数は1桁目を1(2の0乗)、2桁目を2(2の1乗)、3桁目を4(2の2乗)、4桁目を8(2の3乗)、最後の32桁目を2147483648(2の31乗) としているので、これを全部足したものが10進数の表記。 10進数のマイナス値を2進数であらわす場合、2進数の先頭ビットの32桁目を-2147483648(-2の31乗)として10進数表記すれば、内部でもいろいろ便利、ということでそういう風になっています。
2そうだね
プレイ済み
返信[19]
親投稿
MIKIさんの説明はwikipediaの「2の補数」のところでいろいろ説明が書いてあったりするのも。 れいさんの説明は「キャリー 減算」あたりで調べるといろいろ情報があったりするのも。(ぱみゅぱみゅじゃないよ!) 2進数以外での考えについては、コンピュータは16進数表記もできる2進数でしか扱えないので、基本的には2進数のことを考えればよかったりもなのです。 (超大昔に3進数の考えもあったけどその辺はwikipediaの「CPU」あたりを) 浮動小数点数型の「符号ビット」の話が出ているけど、浮動小数点数型と整数型でも内部の2進数の持ち方が違うのです。 (これまた詳しくはwikipediaの「浮動小数点数」で)
3そうだね
プレイ済み
返信[18]
親投稿
リファレンスに書き忘れてるだけで、実はsrcとdst一緒にすると正しく動きませんな仕様な感じするなぁ。 32bytes境界はsmile basic設計上な感じもするけどどうなのかなー 速度よりbuffer overrun対策な感じもするし。 参照先同じにしてもとりあえず落ちないし、いじるといろいろ周りが大変そうだからそのまま放置されてそうな感じする。
0そうだね
プレイ済み
返信[17]
親投稿
プログラムの仕様は決まっているけど、その仕様でどうやってプログラムを書くかはBASICや他の言語でも実は人それぞれなのです。 プチコンでの書き方も皆さんが書いているように、その人の作り方のスタイルで変数を宣言する人、変数宣言しない人がいます。 (複数人で作るなら変数定義するかとか、変数名どんな感じでつけるかは決める必要があったりします) ちなにみ私はBASICの場合は変数宣言してなくて、DIM やVARを特に使わずに、プログラムの先頭やブロックの先頭に SCRX=400 みたいな形で使う変数をまとめて書いておいて、初期値をいれるようなやり方をしてます。 IやXみたいな1文字変数は宣言せずにFORの付近などの短い範囲で使ってます (DIMやVAR書くのめんどい派です)
2そうだね
プレイ済み
返信[15]
親投稿
プログラムでは変数を使うためには「変数をこの名前で使います」って変数定義の宣言がどこかには絶対必要なんですが、 「初めて変数名が出てきたとき」に変数定義をすることで、文章を書くような感じでプログラムが書けるのがBASICの basic(初めてでもプログラムが書ける) らしいところなのです。 ※文章といっても英語なので、IF xx THEN や FOR xx NEXT も文章ぽく書けるのです(大昔には日本語でBASICが書ける「ぴゅう太」というのもあったり) OPTION STRICT は「変数が出てきたときに定義する」ことでデメリットとなる、変数名の打ち間違えた場合に思った通りに動かなくて、それが気づきずらいのを解消するため「変数は最初に定義」させる指示です。 (だいたいの初心者講座には変数名を打ち間違えたら正しく動かないので修正するという講座があるくらい、人間は打ち間違えをします)
3そうだね
プレイ済み
返信[5]
親投稿
DEFは関数で、値を渡して答えを返す仕組みですが、 値を渡さなくて答えを返さない関数も作れるし、答えを複数返すこともできます。 また、DEFの中でボタンの処理したり、グラフィックを書いたり、プログラムでできることなら何でもできます。 これによって、DEFの関数は 値を渡して答えを返す仕組み以外に、プログラムの小さな処理を関数でまとめられることになります。 どの処理をDEFにするか、どの値を渡して何の答えを返すか、どんな処理をするかを考える必要はありますが、それが「プログラムの設計」であってプログラムを作るメインの部分になります。 ※自分が考えている処理を いろんな命令や関数を組み合わせて実現することがプログラムするということです。
0そうだね
プレイ済み
返信[4]
親投稿
数学でいう「関数」って何か値を渡すと、答えが返ってくるという仕組みです。 (関数 y=2x+3 は x に値をいれると y で答えが返ってきます) プチコンや他のプログラムでの関数って仕組みも同じく、何か値を渡すと、答えが返ってくる仕組みです。 (MID$やLEFT$も 文字列と値を渡すと、文字列の値の位置の文字を返します) プチコンでのDEFは関数を作る仕組みです。 具体的な例は おちゃめさんの投稿のとおり、DEFで関数にすると 値を2つ渡して 答えが返ってくるような仕組みが作れます。 プログラムを作るということで考えると、プログラムはたくさんの小さい処理(ボタン処理、背景処理、移動処理など)の集まりなので、DEFで関数にすれば小さい処理をまとめられてプログラムが見やすくなります。
0そうだね
プレイ済み
返信[6]
親投稿
文字列が生成されたとき("1"やCHR$(1)のほう)に文字列確保用ヒープメモリに固定バイト(文字列連結の拡張用)で文字列領域が生成されて、ポインタ配列に参照があるからGC(garbage collection)されずにヒープだけが枯渇してるように見える感じなのかなー 公式ファンミーティングで内部設計公開してたらしいけど、実際のところどうかなー
2そうだね
プレイ済み
返信[20]
親投稿
変換結果はどこかの通信を経由してくるので間違い(入力間違えや改造も含む)が紛れ込む可能性があって、変換結果を生成するときに追加して、変換結果を入力するときに判定して、ゲームデータに戻すときまでには不要になります(変換用データに必要かは処理しだい) データの つじつまがあってるかのチェックするのが目的であれば単純に ひらがな用の値(0~63)を全部足し算した結果を、ひらがな用の値の範囲で表現するだけでもいけます(足し算結果を 64 で mod してあげるか、63で and してあげればいい)※チェックサムの考え ちなみにQRコードでも使われている、データがまちがってても復元できるしくみは「誤り訂正」で、また別の考えなのでそれはそれで。 (誤り訂正用のデータを余計に持っているのでデータ量は増えます)
2そうだね
プレイ済み
返信[18]
親投稿
ゲームデータ → 変換用データ → 変換結果 ゲームデータ ← 変換用データ ← 変換結果 で、ゲームデータはゲームで使ってる変数たち、変換用データは自分が作るやりかた次第、変換結果はふっかつのじゅもんで、 「→」と「←」の部分が別々の処理になって、その処理が気にする変数や変換内容の整頓のためにも紙に書くのオススメです。 ちなみに ふっかつのじゅもんの入力間違え用(変なデータにならない用)に変換データ部分に単純なチェックサムもいっしょに持つ必要もあったりします。
1そうだね
プレイ済み
返信[17]
親投稿
ふっかつのじゅもんシステムって Base64 とだいたい同じなので調べてみるといろいろと分かるかもです(あっちは変換元の長さが固定じゃないので"0"や"="を追加してたりするけど) 結合したデータを配列で持つか2進数文字列で持つか生データそのまま数値で計算してしまうかでやりかたいろいろ変わるので、 wikipediaのBase64の変換例みたいな短いデータをどんな感じで変換していくか実際の処理や変数名を紙に書いて行くとわかりやすいかもです。
1そうだね
プレイ済み
返信[7]
親投稿
学生時代に三角関数から名前つけたのを今でも使ってるくらいには反応しちゃうw
4そうだね
プレイ済み
返信[4]
親投稿
つーーるりん、つーーるりん、ぴーーかーーぴーっかっぴかー!w
4そうだね
プレイ済み