Re: MH雑談47は素数です ( No.229 ) |
- 日時: 2009/11/19 20:35
- 名前: 夭 ◆/.s.....S. (ID: ???)
- >>228
☆ 色違いの判定 前作までは個体値を使って判定していましたが、今作からは性格値とIDで判定しています。 判定式: ( ( ( (ID上位)xor(ID下位) )xor(性格値上位) )xor(性格値下位) ) が7以下なら色違いになります。 解説するとID上位2バイトとID下位2バイトをxorし、それと性格値上位2バイトをxorし、さらにそれと性格値下位2バイトをxorしたものが7以下なら色違いです。 xorとは排他的論理和のことでビットごとに比較して片方のみが1(もう一方は0)のときのみに1になります。(Windowsの電卓を関数電卓にすればxor演算ができます)
具体例その1:(性格値:DF6503E8 ID:98AE562Fのとき) ID上位:98AE ID下位:562F 性格値上位:DF65 性格値下位:03E8となります。 この数を上の式に当てはめると ( ( ( 98AE xor 562F ) xor DF65 ) xor 03E8 ) = 120C > 7 なので色違いではありません。 詳しくは 16進数:( 98AE xor 562F ) = CE81 2進数:( 1001100010101110 xor 0101011000101111 ) = 1100111010000001 ↓ 16進数:( CE81 xor DF65 ) = 11E4 2進数:( 1100111010000001 xor 1101111101100101 ) = 0001000111100100 ↓ 16進数:( 11E4 xor 03E8 ) = 120C 2進数:( 0001000111100100 xor 0000001111101000 ) = 0001001000001100
具体例その2:(性格値:AB41 ID:210A8473のとき) ID上位:210A ID下位:8473 性格値上位:AB41 性格値下位:0E3Dとなります。 この数を上の式に当てはめると ( ( ( 210A xor 8473 ) xor AB41 ) xor 0E3D ) = 0005 <= 7 なので色違いになります。 詳しくは 16進数:( 210A xor 8473 ) = A579 2進数:( 0010000100001010 xor 1000010001110011 ) = 1010010101111001 ↓ 16進数:( A579 xor AB41 ) = 0E38 2進数:( 1010010101111001xor 1010101101000001 ) = 0000111000111000 ↓ 16進数:( 0E38 xor 0E3D ) = 0005 2進数:( 0000111000111000 xor 0000111000111101 ) = 0000000000000101
ってこれGBA時代のものだった どちらにせよ配達員からでは多分色違いは出ないと思うよ
|
|