부스알고리즘을 공부하는데 좀 헷갈리네요

예를들어 1*127 을 한다고 했을때.. 8비트라고 가정하고..

 

피승수 : 1  =>  M=00000001, M'+1(2의보수)=11111111

승수 : 127 => 01111111

카운터 : 8 (=승수의 비트 수)

 

-------------------------------------------------------------------------------

     AC            Qn        Qn+1    SC

00000000   01111111      0        8     Qn마지막과 Qn+1이 1,0이므로 피승수의 2의보수값 더한다

11111111+

11111111   01111111      0        8     

11111111   10111111      1        7     오른쪽 쉬프트

11111111   11011111      1        6     1,1 오른쪽 쉬프트

11111111   11101111      1        5     .

11111111   11110111      1        4     .

11111111   11111011      1        3     .

11111111   11111101      1        2     .

11111111   11111110      1        1     0,1이므로 피승수 더한다

00000001+

00000000   11111110      1        1     오른쪽 쉬프트

00000000   01111111      0        0     카운터 0이므로 종료

 -------------------------------------------------------------------------------

 ==> 결과값 0000000001111111(2)=127(10)

 

이렇게 되는데

 

1*128은

피승수 : 1  =>  M=00000001, M'+1(2의보수)=11111111

승수 : 128 => 10000000

카운터 : 8 (=승수의 비트 수)

-------------------------------------------------------------------------------

     AC            Qn        Qn+1    SC

0000000010000000 0 80,0이므로 쉬프트

00000000   00100000      0        6     그리고 오른쪽 쉬프트

00000000   00010000      0        5     .

00000000   00001000      0        4     .

00000000   00000100      0        3     .

00000000   00000010      0        2     .

00000000   00000001      0        1     1,0이므로 2의보수 더한다

11111111+

11111111   00000001      0        1     그리고 오른쪽 쉬프트

11111111   10000000      1        0     카운터 0이므로 종료

 -------------------------------------------------------------------------------

 ==> 결과값 1111111110000000(2)=???(10)

왜 이상한 값이 나오는 거죠??

 

8비트*8비트 = 16비트

그럼 8비트짜리들은 -255 ~ 255까지 표현할 수 있는거고.. 그럼 오버플로우 되지 않으니 아무

문제없는 거 아니에요??