문제

이것은 수학 문제이지만, 이것이 일부 프로그래밍 시나리오에서 등장해야한다고 확신합니다. 적어도 그렇게 희망하며, 이런 유형의 상황에 대한 이름이 있는지 궁금합니다.

시리즈에 7 개의 항목이 있다고 가정합니다. 이 예를 위해, 요일을 사용해 봅시다. 나는 다음 주에 그들이 올 요일을 제출하기를 원합니다. 그들은 매주 매일 하나의 표준 확인란을 제공합니다.

하나의 데이터베이스 필드에서 하나의 정수로 선택한 날을 저장하고 싶습니다.

분명히, 나는 매일 숫자, 1-7을 할당 할 수 있습니다 (사용자가 모든 선택을 선택하지 않은 경우 0을 남겨 두십시오). 그러나 한 사용자가 월요일과 화요일 (1 + 2)을 선택하고 다른 사용자가 수요일 (3)을 선택하면 문제가 발생합니다.

나는 또한 매주 매주 다른 조합의 조합이 다른 조합과 동일하게하는 것이 불가능한 기괴한 독특한 독특한 것을 줄 수있었습니다.

내 희망은 두 번째 시나리오에 대한 그러한 시리즈를 구성하기보다는 이미 잘 사용되고 존경받는 일부 수치 속성 (시리즈의 각 숫자의 제곱 등)이 존재하기를 바랍니다. 이상적으로, 이것은 프로그래밍에 너무 익숙 할 것이므로 개별 숫자를 도출하는 것은 일반적인 프로그래밍 언어 (내 경우 PHP)의 오버 헤드가 거의 사용되지 않을 것입니다.

나는 단지 이것을 꿈꾸 었습니까, 아니면 이와 같은 것이 존재합니까?

도움이 되었습니까?

해결책

비트 마스크 - 파워 2를 사용하십시오.

Monday = 2 ^ 0 = 1
Tuesday = 2 ^ 1 = 2

등등. 그런 다음 월요일과 화요일은 다음과 같습니다.

Monday | Tuesday = 3 (or 00000011 in binary)

다른 팁

당신은 사용할 수 있습니다

Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
Saturday = 32
Sunday = 64

조합은 독특합니다.

그런 다음 월요일과 화요일 = 3, 수요일 = 4.

이것은 C#에서 IDEE에 대한 좋은 설명을 제공합니다.

열거적인 플래그 속성

메모리가 소중한 시대에 프로그래머는 종종 설정, 매개 변수, 게임 레이아웃 등을 인코딩하는 데 많은 어려움을 겪었습니다. 일부 언어에는 비트 세트가 내장되어있었습니다.

한 번은 여덟 여왕 문제를 해결하기 위해 보드 레이아웃을 저장하는 데 사용한 비트 세트에 대한 튜토리얼을 읽은 것을 기억합니다.

대부분의 C 프로그래머는 이러한 종류의 문제에 대해 비트 조작 매크로의 작은 라이브러리를 가지고있었습니다. 보다 비트 세트 예를 들어. 예를 들어 디지털 I/O에서 비트를 켜고 끄는 직접 하드웨어 조작을 수행하는 코드에 여전히 많이 사용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top