Thursday, April 19, 2007
Java 자바] int를 unsigned 형 long으로 변환 캐스팅(Typecasting) 함수
자바의 32비트 정수형인 int는, "signed int" 즉, 플러스/마이너스 부호가 있는 정수입니다. 자바에는 char형만 unsigned형입니다. 그 외에는 unsigned형이 없습니다.
예를 들어, int에 들어 있는 -1 이라는 숫자를, unsigned형으로 표현하면 4294967295 가 되는데, 이런 변환 작업을 자바에서 하려면 아래 예제의 unsigned32() 라는 메소드(함수)를 사용하면 됩니다. 자바에서는 unsigned형으로 형변환(Typecasting)하는 캐스트 연산자가 제공되지는 않습니다. unsigned형 자체가 없기에...
자바의 int에는 2147483647 이상의 숫자를 넣을 수 없으므로, unsigned32()는, int가 아닌 long형으로 반환합니다. (물론 자바의 long형도 unsigned형은 없지만, 64비트 정수이기에 천문학적인 정수를 대입할 수 있습니다.)
예제 소스 파일명: Example.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
참고: ▶▶ C 언어] signed int 를, unsigned int 로 상호 변환, 캐스팅
예를 들어, int에 들어 있는 -1 이라는 숫자를, unsigned형으로 표현하면 4294967295 가 되는데, 이런 변환 작업을 자바에서 하려면 아래 예제의 unsigned32() 라는 메소드(함수)를 사용하면 됩니다. 자바에서는 unsigned형으로 형변환(Typecasting)하는 캐스트 연산자가 제공되지는 않습니다. unsigned형 자체가 없기에...
자바의 int에는 2147483647 이상의 숫자를 넣을 수 없으므로, unsigned32()는, int가 아닌 long형으로 반환합니다. (물론 자바의 long형도 unsigned형은 없지만, 64비트 정수이기에 천문학적인 정수를 대입할 수 있습니다.)
비트 연산: unsigned int (unsigned long) 로 변환
예제 소스 파일명: Example.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
public class Example {
public static void main(String[] args) {
System.out.println( unsigned32(-1) ); // 4294967295
System.out.println( unsigned32(-2) ); // 4294967294
System.out.println( unsigned32(1) ); // 1
System.out.println( unsigned32(0)); // 0
System.out.println( unsigned32(0xFFFFFFFF) ); // 4294967295 (부호 없는 32비트 int형의 최대값)
System.out.println( unsigned32(0x7FFFFFFF) ); // 2147483647 (부호 있는 32비트 int형의 최대값)
System.out.println( unsigned32(0x7FFFFFFF - 1) ); // 2147483646
System.out.println( unsigned32(0x7FFFFFFF + 1) ); // 2147483648
}
// int를, unsigned형 long으로 변환 메서드
public static long unsigned32(int n) {
return n & 0xFFFFFFFFL;
}
}
public static void main(String[] args) {
System.out.println( unsigned32(-1) ); // 4294967295
System.out.println( unsigned32(-2) ); // 4294967294
System.out.println( unsigned32(1) ); // 1
System.out.println( unsigned32(0)); // 0
System.out.println( unsigned32(0xFFFFFFFF) ); // 4294967295 (부호 없는 32비트 int형의 최대값)
System.out.println( unsigned32(0x7FFFFFFF) ); // 2147483647 (부호 있는 32비트 int형의 최대값)
System.out.println( unsigned32(0x7FFFFFFF - 1) ); // 2147483646
System.out.println( unsigned32(0x7FFFFFFF + 1) ); // 2147483648
}
// int를, unsigned형 long으로 변환 메서드
public static long unsigned32(int n) {
return n & 0xFFFFFFFFL;
}
}
참고: ▶▶ C 언어] signed int 를, unsigned int 로 상호 변환, 캐스팅
tag: java
자바 | Java
<< Home