1. 개요

0xff  16진수 시스템(밑수 16)으로 표현되는 숫자입니다. 16진수로 된 두 개의 F 숫자로 구성됩니다. 우리가 알다시피,16진수의 F 는 이진수 시스템의 1111과 같습니다. 따라서 이진법으로 0xff 는 11111111입니다.

이 기사에서는 0xff  값 을 사용하는 방법을 알아보겠습니다 . 또한 여러 데이터 유형을 사용하여 표현하는 방법과 & 연산자 와 함께 사용하는 방법을 살펴보겠습니다 . 마지막으로 사용과 관련된 몇 가지 이점을 검토합니다.

2.   다른 데이터 유형으로 0xff 표현하기

Java에서는 0x 접두사와 정수 리터럴 을 사용하여 16진수(16진수)로 해석되는 숫자를 정의할 수 있습니다.

0xff 은 부호 없는 십진수의 경우 255, 부호 있는 십진수의 경우 -127, 이진수의 경우 11111111에 해당합니다.

우리가 정의한다면, INT의 값과 변수 를 0xFF ,  이후 자바 32 비트를 이용하여 정수의 숫자를 나타내고 , 은 0xFF은  255이다 :

int x = 0xff;
assertEquals(255, x);

그러나, 우리는 정의하면 바이트 값과 변수 를 0xFF , 자바는 8 비트를 이용하여 바이트를 나타내며 바이트 서명 데이터 형식이므로 이후 , 의 값 은 0xFF가  -1 :

byte y = (byte) 0xff;
assertEquals(-1, y);

보시다시피 0xff  값 으로 바이트 변수를 정의할 때 바이트 데이터 유형 의 범위 -128 ~ 127 이므로 바이트 로 다운캐스트해야 합니다 .

3. & 0xff  연산 의 일반적인 사용법

운영자가 행하는 비트 단위 AND 연산 . 비트 AND의 출력은 두 피연산자의 해당 비트가 1이면 1입니다. 반면에 피연산자 중 하나의 비트가 0이면 해당 비트의 결과는 0으로 평가됩니다.

0xff  는 마지막 8비트8개의 1이 있기 때문에 비트 AND 연산을 위한 ID 요소가 됩니다 . 우리가 적용한다면, X & 0xff의  작업을, 그것에서 우리에게 가장 낮은 8 개 비트를 줄 것이다 X . 숫자 x 가 255보다 작더라도 여전히 동일합니다. 그렇지 않으면 x 에서 가장 낮은 8비트가 됩니다 .

일반적으로 & 0xff  연산은 숫자에서 가장 낮은 8비트를 추출하는 간단한 방법을 제공합니다 . 가장 낮은 비트가 되고자 하는 8비트를 오른쪽으로 이동할 수 있기 때문에 실제로 필요한 8비트를 추출하는 데 사용할 수 있습니다. 그런 다음 & 0xff  연산 을 적용하여 추출할 수 있습니다 .

& 0xff 를 사용하여 얻을 수 있는 이점을  좀 더 자세히 설명하는 예를 살펴보겠습니다 .

4. & 0xff를 사용하여 RGBA 색좌표 추출하기

RGBA 시스템의 색상을 나타내는 32비트에 저장된 정수 x 가 있다고 가정해 보겠습니다. 즉, 각 매개변수(R, G, B 및 A)에 대해 8비트가 있음을 의미합니다.

  • R = 16(2진수로 00010000)
  • G = 57(2진수로 00111001)
  • B = 168(2진수로 10101000)
  • A = 7(2진수로 00000111)

따라서 x 는 2진법으로 00010000 00111001 10101000 00000111로 표시됩니다. 이는 십진수로 272214023과 같습니다.

이제 x 값이 10진수로 되어 있고 각 매개변수의 값을 추출하려고 합니다.

알다시피 >> 연산은 비트를 오른쪽으로 이동합니다. 따라서 (10000000 00000000 >> 8)을 수행하면 10000000 이 됩니다. 결과적으로 각 매개변수의 값을 추출할 수 있습니다 .

int rgba = 272214023;

int r = rgba >> 24 & 0xff;
assertEquals(16, r);

int g = rgba >> 16 & 0xff;
assertEquals(57, g);

int b = rgba >> 8 & 0xff;
assertEquals(168, b);

int a = rgba & 0xff;
assertEquals(7, a);

5. 결론

이 사용방법(예제)에서는 & 0xff  연산이 마지막 8비트의 값만 남기고 나머지 비트는 무시하는 방식으로 변수를 효과적으로 나누는 방법에 대해 논의했습니다 . 우리가 보았듯이 이 작업은 변수를 오른쪽으로 이동하고 이동된 비트를 추출해야 할 때 특히 유용합니다.

항상 그렇듯이 이 기사에 제공된 코드는 GitHub에서 사용할 수  있습니다 .

Junit footer banner