자바 byte char short int float long double 철저히 이해

3842 단어
수치 유형 범위 에 관 한 문 제 를 많이 만 났 습 니 다. 여기 서 정 리 를 하면 우 리 는 서로 다른 수치 유형 이 표시 할 수 있 는 수치 범 위 를 여러 측면 에서 이해 할 수 있 습 니 다.
 여기 서 우 리 는 자바 의 수치 유형 만 이야기 합 니 다.
 먼저 byte:
이 부분 은 jdk 에서 Byte. java 에서 추출 한 원본 코드 입 니 다.
/** * A constant holding the minimum value a byte can * have, -27. */public static final byte MIN_VALUE = -128;/** * A constant holding the maximum value a byte can * have, 27-1. */public static final byte MAX_VALUE = 127;
여기 서 byte 의 수치 범 위 를 알 수 있다. - 128 - 127;
컴퓨터 구성 원리 의 측면 에서 설명 할 수 있 듯 이 byte 는 컴퓨터 에서 8 개의 바이트 를 차지 하고 byte 는 기호 성형 이 있 을 때 이 진 으로 표시 할 때 가장 높 은 위 치 는 기호 비트 0 이 정수 1 을 대표 하 는 음 수 를 나타 낸다.
최대 치: 127      0111 1111 즉 2 의 7 차방 에서 1 을 빼 기;
최소 값: - 128 이라는 숫자 가 저 를 오랫동안 괴 롭 혔 습 니 다. 정수 가 컴퓨터 에 원래 코드 로 존재 하 는 지 알 아야 합 니 다. 음 수 는 컴퓨터 에 그 코드 형식 으로 존재 합 니 다. 그러면 음수 의 코드 는 어떻게 계산 합 니까?바로 음수 의 절대 치 의 원 코드 를 2 진법 으로 바 꾸 고 위치 에 따라 반 을 취하 고 1 을 더 하 는 것 이다.
아래 이거 10 이랑 - 10 을 예 로 들 어서 소개 해 드릴 게 요. :10 원 사이즈: 0000 1010   그것 이 컴퓨터 에 저장 되 어 있 는 것 은 0000 1010 이다. 그러면 - 10 은 요?앞에서 말 한 것 에 따 르 면 절대 치 는 10 이 고 이 진 0000 1010 으로 바 뀌 었 습 니 다. 비트 별로 1111 0101 을 취하 고 1 을 더 한 후에 1111 0110 입 니 다. 이것 은 - 10 코드 입 니 다. 좋 습 니 다. 컴퓨터 중의 1111 0110 이 대표 - 10 입 니 다.
 보 겠 습 니 다. - 128.  절대 치 128 의 바 이 너 리 표시: 1000 0000 비트 당 0111 1111 1 을 더 한 후: 1000 만, 즉 - 128 은 컴퓨터 에서 1000 만 을 나타 낸다. 다시 한 번 볼 때 - 129 는 컴퓨터 에서 절대 치 129 의 범 위 는 byte 의 자릿수 를 넘 어 섰 다.
또 있 으 면 통과 할 수 있어 요.
System.out.println(Byte.MAX_VALUE);//System. out. println (Byte. MIN VALUE);/최소 값
Byte 의 최대 값 과 최소 값 을 출력 합 니 다.
다시 말 하면 byte 의 수치 범 위 는 - 128 - 127 밖 에 안 됩 니 다.  마이너스 2 의 7 제곱 에서 2 의 7 제곱 에서 1 을 빼 는 것 이다.
해당 하 는 short 는 16 비트 로 기호 성형 이 있 고 int 는 32 비트 로 기호 성형 이 있다. long 은 64 비트 로 기호 성형 이 있 으 면 위 와 같이 수치 범 위 를 계산 할 수 있다.
 
char 는 16 비트 부호 없 는 성형 으로 그 범위 가 0 - 2 인 15 차방 이라는 것 은 논쟁 할 여지 가 없다.
 
Character. java 에서 원본 코드 를 따 옵 니 다:
/** * The constant value of this field is the smallest value of type * char , '/u0000' . * * @since 1.0.2 */public static final char MIN_VALUE = '/u0000';/** * The constant value of this field is the largest value of type * char , '/uFFFF' . * * @since 1.0.2 */public static final char MAX_VALUE = '/uffff';
float 는 32 비트 의 부동 소수점 형 으로 한다.
Float. java 원본 에서 떼 어 내기:
/** * A constant holding the largest positive finite value of type * float , (2-2-23)·2127. * It is equal to the hexadecimal floating-point literal * 0x1.fffffeP+127f and also equal to * Float.intBitsToFloat(0x7f7fffff) . */public static final float MAX_VALUE = 3.4028235e+38f;//0x1.fffffeP+127f/** * A constant holding the smallest positive nonzero value of type * float , 2-149. It is equal to the * hexadecimal floating-point literal 0x0.000002P-126f * and also equal to Float.intBitsToFloat(0x1) . */public static final float MIN_VALUE = 1.4e-45f;//0x0.000002P-126f
 
double 은 64 로 부동 소수점 형 이다.
Double. java 원본 코드:
/** * A constant holding the largest positive finite value of type * double , * (2-2-52)·21023. It is equal to * the hexadecimal floating-point literal * 0x1.fffffffffffffP+1023 and also equal to * Double.longBitsToDouble(0x7fefffffffffffffL) . */public static final double MAX_VALUE = 1.7976931348623157e+308;//0x1.fffffffffffffP+1023/** * A constant holding the smallest positive nonzero value of type * double , 2-1074. It is equal to the * hexadecimal floating-point literal * 0x0.0000000000001P-1022 and also equal to * Double.longBitsToDouble(0x1L) . */public static final double MIN_VALUE = 4.9e-324;//0x0.0000000000001P-1022
 

좋은 웹페이지 즐겨찾기