プレイ日記
【質問】 なぜか色コードの部分が「-」でもできるのはなぜですか?
2そうだね
プレイ済み
返信[1]
親投稿
だにえる haru2016nen
色コードは数値で 「-」はマイナス符号だから
2そうだね
プレイ済み
返信[2]
親投稿
?RGB(0,0,0) としてみてください。 そもそもRGBってほぼほぼマイナスなのです。
2そうだね
プレイ済み
返信[3]
親投稿
2進数って、一番上の位が1になると、マイナスの数になるんだよねー(符号bitというやつです) 色コードは、32bit整数型を目いっぱい活用しているので、符号のbitも1になって、普通の表し方に直すとマイナスになるのよね。
2そうだね
プレイ済み
返信[4]
親投稿
MIKI ifconfig
符号ビットてのは、符号ビット以外が絶対値を表し、符合ビットが正負を表す方法だから +-(2^30-1)までしか表せなくなっちゃうし、+0と-0と二つの0が混在しちゃう。 プチコンの整数(二進数)は十進数と同様に各ビットが2のべき乗の係数を表している。 十進数 1234=1*10^3 + 2*10^2 + 3*10^1 + 4*10^0 二進数 1010=1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8+0+2+0 これだと負の数が表せないので、一番左の 2^3 を -(2^3) に変更する。すると 1010 = 1*(-(2^3)) + 0*2^2 + 1*2^1 + 0*2^0 = -8+0+2+0 実際は32ビットだから一番左は -(2^31) の係数ってことになる。 これによって -2^31 から +2^31-1 まで表せるようになるし、0 の表現も唯一。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
他の方が書かれているコメントに補足するとプチコン3号ではARGBの32bitで色を指定しますが、Aを省略してRGBのみで色を指定した場合は不透明色が選択され自動的に上位bitの部分を占めているAは2進数で11111111となります。 つまり、その場合の色コードは11111111(Rの8bit)(Gの8bit)(Bの8bit)という32桁の2進数で指定している状態になっているため符号を表す一番上の桁は常に1になっていて負数になっているというわけです。 正の数になるのは透明色だけです。スプライトではSPCOLORによって半透明色が表示できますが、GRPでは事実上「透明か」「不透明か」しかないため半透明色を指定(正の数で色を指定)しても使える用途はかなり限られてしまい使用することは普通はないと思います。 それを端的に言えば「普通に色指定したらマイナス(負数)になる」ということです。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
?BIN$(RGB(0,0,0)) のようにして適当なR、G、Bで色入力をして2進数表示をすると上記で私が書いていることが伝わると思います。
0そうだね
プレイ済み