누군가가, 우리는 공식을 사용하여 자바 부호없는 바이트에 서명 바이트를 변환 할 수 있다고 얘기했다수식 int unsignedByte = signedByte> = 0을 사용하여 부호있는 바이트를 부호없는 바이트로 변환 하시겠습니까? signedByte : 256 + signedByte;
int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte;
그러나 예를 들어, 나는 -128 1 (바이트 값 범위의 signedByte 값이있는 경우 ~ 127),이 수식을 사용하므로 1 >= 0
은 true
으로 평가되므로 첫 번째식이 사용되어 1 + 1
이되며 이는 2
과 같습니다. 그러나 unsignedByte에서 129로 표시된 동일한 숫자를 기대하고 있었습니까?
이해가 잘못되었거나 잘못되었습니다.
실제 서명 된 값과 부호없는 값을 사용한 예가 대단히 감사하겠습니다.
당신은 너무 같은 비트 AND 연산자 사용할 수
그래서 값이 1 인 signedByte> = 0이 true로 평가되면 int unsignedByte = 1입니까? 하지만 int unsignedByte는 129와 같아야한다고 생각 했나요? – Thor
* "unsignedByte = 1?하지만 unsignedByte는 129와 같아야한다고 생각 했습니까?"* 아니요, 틀렸어요. https://en.wikipedia.org/wiki/Two%27s_complement –
안전을 위해서, 항상'256 + signedByte'를 괄호에 넣고 모든 의심할만한 것들을 제거 할 수 있습니다. –