2011-07-06 5 views
0

바이트로 다음 작업을 수행해야합니다. (2*x*x)+x 여기서 x는 1 바이트입니다. 우리가 int를 위해하는 것처럼 직접적으로 그 작업을 수행 할 수 있습니까? 위의 작업을 수행 할 수있는 방법이없는 경우* 연산자를 직접 사용하여 2 바이트를 직접 곱할 수 있습니까?

+1

시도해 보셨습니까? – Kevin

+0

'^'기호 란 무엇입니까? ** XOR ** (프로그래밍 표기법) 또는 ** ** 힘 (수학 표기법)입니까? – SteeveDroz

+0

예 직접 시도했습니다. 하지만 출력이 올 바르거나 맞지 않을지 확신하지 못합니다. – Pramod

답변

2

다음을 시도해 보셨습니까?

byte x = 
int f = 2 * x * x + x; 

연습으로 모든 가능한 바이트 값의 결과를 출력하고 예상 값을 얻는 지 확인하십시오. 256 개의 가능한 바이트 값만 있습니다.

+0

예, 컴파일러가 어떤 작업을하든 반대하지 않습니다. 하지만 내 의문은 출력이 맞는지 아닌지에 관한 것입니다. – Pramod

+0

바이트가 -128에서 127 사이의 값으로 서명되었다고 가정하면 답변이 정확합니다. –

1

예.

자바 정수 연산은 두 보수입니다. 즉, 길이를 줄이거 나 길이를 줄이면 결과에 영향을 미치지 않습니다.

참고 1 : 오버플로가 있는지 확인하십시오. 결과가 128/-127 범위에 있지 않으면 바이트 (또는 부호가없는 경우 255/0)에 맞지 않습니다.

참고 2 : 부동 소수점 형은 정수 연산의 일부가 아닙니다.

0

따라서 컴파일러가 허용하기 때문에 연산자가 있다고 생각되지만 JVM이 결과를 올바르게 계산할 것이라고 생각하지는 않습니다. 왜?

테스트가 얼마나 어려운가요? 바이트에는 각각 256 개의 값만 있습니다.

관련 문제