1 차원 Convay의 게임 라이프 프로그램을 시도하고 있지만 세대가 지나갈 때마다 프로그램에서 계속 추가 숫자를 생성합니다. 코드 :이Error : 비트 단위 연산으로 여분의 숫자 받기
10110
10011
100110
101111
1011110
1001001
같은
int generation=IntegerparseInt(in.nextLine().trim());
long cells=Long.parseLong(input1, 2);
for(int i=0;i<generation;i++)//Assume
{
long newa=cells>>1;
long newb=cells<<1;
System.out.println(Long.toBinaryString(newb));//For testing purpose
cells=newa^newb;
System.out.println(Long.toBinaryString(cells));//For testing purpose
}
으로 입력
3
01011
(3 세대)
같은 나는 점점 오전 출력은 원하는 출력이 될 것10110
00011
00110
10111
01111
01011
편집 : 찬 후 에 테스트 코드를 드래그하는 :
for(int i=0;i<generation;i++)
{
long newa=cells>>1;
long newb=cells<<1;
System.out.println(Long.toBinaryString(newb));
System.out.println(Long.toBinaryString(newa));
cells=newa^newb;
System.out.println(Long.toBinaryString(cells));//For testing purpose
}
출력은 다음과 같습니다
10110
101
10011
100110
1001
101111
1011110
10111
1001001
이유 newb 것 1000일까요? 1110 년이 아니겠습니까? – Spano
웁스! 당신 말이 맞아요, 제 대답을 바로 잡았습니다. 그러나 셀이 0이 아니면 여분의 숫자가 계속 남아 있습니다. –
특정 숫자로 캡핑 할 수 있습니까? – Spano