주기적 시퀀스를 얻었다 최대 한계 이상 쉬프트 :내가 CodeBlocks IDE에 다음 코드를 작성하고 실행 한
main()
{
unsigned char num=1;
unsigned char i=0;
for(i=0;i<255;i++)
{
printf("%d\n",num>>i);
}
}
출력 : 1,0,0, .. (31 '0'), 1,0 .. (31 0)
모든 값은주기적인 시퀀스를 생성합니다.
한계를 넘는 변화 (num 크기의 mem 크기)는 정의되지 않은 동작이지만 왜 주기적입니까? 주기적인 순서는 당신이이 정의되지 않은 동작의 가능한 표현이기 때문에 정기적으로 할 수있어
"한계 (mem 크기는 num)를 넘어서는 변화는 정의되지 않은 동작이지만 왜 주기적입니까?" 당신의 진술이 모순이라고 생각하지 않습니까? – usr
Undefined = 특정 범용 논리가 없습니다. Periodic = 반복 할 때 논리를 지정할 수 있습니다. –
일부 assember 32 비트 시프트 명령어는 오른쪽 연산자에 대해 5 비트 만 허용하므로'num >> i'는'num >> i & 0x1F)'. – mch