음수값을 가지지 않을 경우 적은 바이트 수만을 허용하여 그 2배에 해당하는 양의 범위를 갖는다.
import java.util.Scanner;
public class CodeUp1028 {
// unsigned long 사용하기
public long unsigned(int num) {
return num & 0xffffffffL;
}
public static void main(String[] args) {
CodeUp1028 T = new CodeUp1028();
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.println(T.unsigned(num));
}
}
메소드 설명
&(And)
0xff
를 했을 경우 unsigned형태로 자료범위가 0~ 255가 된다.&
0xffffffffL
으로 연산했다.에러 발생
첫번째 코드를 그대로 실행하면 아래처럼 int정수에 들어갈수 있는 범위를 초과한 값을 넣었다고 알려준다
import java.util.Scanner;
public class CodeUp1028 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
int i = (int)num;
// System.out.println(i);
System.out.println(Integer.toUnsignedString(i));
}
}
/*
input : 2147483648
output : 2147483648
*/