Minimax-Algorithm I 코드의 경우 비트 연산을 실험하여 속도를 높이고 싶습니다. 각 gamestate는 UInt128로 저장되며 4x4 타일 기반 보드를 설명합니다. 각 타일은 0 ~ 32 (배타적)의 값을 가질 수 있으므로 타일 당 5 비트입니다.2 차원 비트 배열에서 비트 추출
+-------+-------+-------+-------+
| 0-4 | 5-9 | 10-14 | 15-19 |
+-------+-------+-------+-------+
| 20-24 | 25-29 | 30-34 | 35-39 |
+-------+-------+-------+-------+
| 40-44 | 45-49 | 50-54 | 55-59 |
+-------+-------+-------+-------+
| 60-64 | 65-69 | 70-74 | 75-79 |
+-------+-------+-------+-------+
실제로 보드에서 연산을 수행하려면 3x3의 중심을 기준으로 4x4에서 3x3 블록을 추출해야합니다. 나는 어떻게 그것에 대해 갈 것인가? 비트 쉬프트를 통해 모든 셀을 수동으로 처리하면 아무런 문제가 발생하지 않지만 더 빠른 방법이 있는지 궁금합니다.
미리 감사드립니다.
(문제가되는 경우 언어는 C#입니다)
awnser에게 감사드립니다. 바이트 배열을 복사 할 때 바이트 배열이 꽤 비싸지 않습니까? (구조체 내부에서 사용) –
그건 내가보기에 제안한 것입니다. 저의 요점은 하나의 128 비트 어레이를 다른 것으로 추출하는 것보다 비용이들 것이므로 비트 마스크 (계산 위치 등)를 읽고/쓰는 것입니다. 두 개의 구조체 (아마도 UInt128은 무엇입니까?), 16 바이트 변수 Cell1-16 (System.Numerics.Matrix4x4와 유사) 및 Cell1-9와 다른 구조체를 만들 수 있습니다. 이들이 이제 ValueType (참조 유형 인 바이트 배열과 반대 됨)이기 때문에 UInt128처럼 복사됩니다. – Rob