검수요청.png검수요청.png

"Long"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (크기)
 
(사용자 3명의 중간 판 10개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''long'''은 [[int]]형보다 더 많은 용량이 필요할때 쓰이는 정수형 변수문이다.
+
'''long'''은 [[int]]형보다 더 많은 용량이 필요할 때 쓰이는 정수형 변수문이다.
  
 
==개요==
 
==개요==
int가 32비트 인 [[CPU]] [[컴파일러]]를 사용 할때, 64비트 정수형이 필요하다면 long long int을 사용한다. [[C99]]의 정수형 표준을 따르지 않는 일부 컴파일러는 long int만으로는 64비트를 지원하지 않으므로 주의 해야 한다. long long 을 사용할 때도 오래된 버전의 컴파일러에서는 지원하지 않는 경우도 있으므로 주의 해야 한다. 8비트 CPU의 경우 int 만으로는 주로 16비트만을 지원하므로 32비트가 필요하다면 long int을 사용한다. 이와 같이 long을 사용할 때는 상황에 따라 다르므로 컴파일러의 성능을 확인해야 한다.<ref> 〈[https://ko.wikipedia.org/wiki/Long_%EC%A0%95%EC%88%98%ED%98%95 long 정수형]〉, 《위키백과》 </ref>
+
long은 int가 32비트인 [[중앙처리장치]] [[컴파일러]]를 사용할 때, 64비트 정수형이 필요할 때 사용하는 자료형이다. [[C99]]의 정수형 표준을 따르지 않는 일부 컴파일러는 long int만으로는 64비트를 지원하지 않음으로 주의해야 한다. [[long long]]을 사용할 때도 오래된 버전의 컴파일러에서는 지원하지 않는 경우도 있음으로 주의해야 한다. 8비트 중앙처리장치의 경우, 주로 int만으로는 16비트만을 지원하므로 32비트가 필요하다면 long int를 사용한다. 이처럼 long을 사용할 때는 상황에 따라 다르므로 컴파일러의 성능을 확인해야 한다.<ref> 〈[https://ko.wikipedia.org/wiki/Long_%EC%A0%95%EC%88%98%ED%98%95 long 정수형]〉, 《위키백과》 </ref>
  
 
==크기==
 
==크기==
*long와 관련된 자료의 크기는 다음과 같다.
+
long은 [[운영체제]]마다 크기가 다 다르며 종류는 [[윈도우]], [[리눅스]], [[맥OS]] 등이 있다.<ref name="크기"> 밤머리, 〈[https://shjz.tistory.com/28 Microsoft Visual C++ 프로그래밍 자료형 총정리]〉, 《티스토리》, 2018-07-23 </ref>
long, 4바이트, -2,147,483,648 ~ 2,147,483,647
 
 
unsigned long, 4바이트, 0 ~ 2,147,483,647 + 2,147,483,648
 
 
long long, 8바이트, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 
 
unsigned long long, 8바이트, 0 ~ 9,223,372,036,854,775,807 + 9,223,372,036,854,775,808<ref name="long"> Hello World, 〈[https://eskeptor.tistory.com/107 처음하시는 분들을 위한 C언어 기초강의 시즌2 - 06 (자료형2)]〉, 《티스토리》, 2018-07-08 </ref>
 
*long은 운영체제 마다 크기가 다 다르며 동류는 [[Windows]], [[리눅스]], [[OS X]]등이 있다.<ref name="크기"> 밤머리, 〈[https://shjz.tistory.com/28 Microsoft Visual C++ 프로그래밍 자료형 총정리]〉, 《티스토리》, 2018-07-23 </ref>
 
  
===운영체제===
+
:{|class=wikitable width=800
다음은 각 운영체제 마다 CPU : 바이트 : 비트로 나타낸 것이다.<ref name="크기"></ref>
+
|+<ref name="long"> Hello World, 〈[https://eskeptor.tistory.com/107 처음하시는 분들을 위한 C언어 기초강의 시즌2 - 06 (자료형2)]〉, 《티스토리》, 2018-07-08 </ref>
 +
!align=center|자료형
 +
!align=center|크기
 +
!align=center|값의 범위
 +
|-
 +
|align=center|long
 +
|align=center|4바이트
 +
|align=center|-2,147,483,648 ~ 2,147,483,647
 +
|-
 +
|align=center|unsigned long
 +
|align=center|4바이트
 +
|align=center|0 ~ 2,147,483,647 + 2,147,483,648
 +
|-
 +
|align=center|long long
 +
|align=center|8바이트
 +
|align=center|-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 +
|-
 +
|align=center|unsigned long long
 +
|align=center|8바이트
 +
|align=center|0 ~ 9,223,372,036,854,775,807 + 9,223,372,036,854,775,808
 +
|}
  
====Windows====
+
; 운영체제별 크기
x86(32비트) : 4바이트(byte) : 32비트(bit)
+
:{|class=wikitable width=800
x86-64(64비트) : 4바이트(byte) : 32비트(bit)<ref name="크기"></ref>
+
|+<ref name="크기"></ref>
 +
!align=center|운영체제
 +
!align=center|CPU(플랫폼)
 +
!align=center|바이트 크기
 +
!align=center|비트 크기
 +
|-
 +
|align=center rowspan="2"|윈도우
 +
|align=center|x86(32비트)
 +
|align=center|4바이트
 +
|align=center|32비트
 +
|-
 +
|align=center|x86-64(64비트)
 +
|align=center|4바이트
 +
|align=center|32비트
 +
|-
 +
|align=center rowspan="2"|리눅스
 +
|align=center|x86(32비트)
 +
|align=center|4바이트
 +
|align=center|32비트
 +
|-
 +
|align=center|x86-64(64비트)
 +
|align=center|8바이트
 +
|align=center|64비트
 +
|-
 +
|align=center rowspan="2"|맥OS X
 +
|align=center|x86(32비트)
 +
|align=center|4바이트
 +
|align=center|32비트
 +
|-
 +
|align=center|x86-64(64비트)
 +
|align=center|8바이트
 +
|align=center|64비트
 +
|}
  
====리눅스====
+
== 유형 ==
x86(32비트) : 4바이트(byte) : 32비트(bit)
+
=== C언어 ===
x86-64(64비트) : 8바이트(byte) : 64비트(bit)<ref name="크기"></ref>
+
[[C언어]]에서는 long의 형태에 따라 서식 형태가 달라진다.
  
====OS X====
+
;printf문
x86(32비트) : 4바이트(byte) : 32비트(bit)
+
다음은 [[printf]]문에 나타내는 long의 형태이다.
x86-64(64비트) : 8바이트(byte) : 64비트(bit)<ref name="크기"></ref>
 
  
==C언어==
+
:{|class=wikitable width=800
C언어에서는 long의 형태에 따라 서식형태가 달라진다.
+
|+<ref name="long"></ref>
 +
!align=center|서식문자
 +
!align=center|출력대상
 +
!align=center|출력형태
 +
|-
 +
|align=center|%ld(엘디)
 +
|align=center|long
 +
|align=center|부호가 있는 10진수 정수
 +
|-
 +
|align=center|%lld(엘엘디)
 +
|align=center|long long
 +
|align=center|부호가 있는 10진수 정수
 +
|-
 +
|align=center|%Lf(엘에프)
 +
|align=center|long double
 +
|align=center|10진수 방식의 부동소수점 실수
 +
|}
  
===printf문===
 
다음은 printf문에 나타내는 long의 형태이다.
 
*%ld(엘디) : long : 부호가 있는10진수 정수
 
*%lld(엘엘디) : long long : 부호가 있는10진수 정수
 
*%Lf(엘에프) : long double : 10진수 방식의 부동소수점 실수<ref name="long"></ref>
 
 
위 내용처럼 한 예시로 나타낼 수 있다.
 
위 내용처럼 한 예시로 나타낼 수 있다.
 
  #include <stdio.h>
 
  #include <stdio.h>
60번째 줄: 114번째 줄:
 
  ldx = 1.2345678901234567890<ref> 우균, 〈[https://woogyun.tistory.com/391 printf에서 long long, long double 출력하기]〉, 《티스토리》, 2013-03-13 </ref>
 
  ldx = 1.2345678901234567890<ref> 우균, 〈[https://woogyun.tistory.com/391 printf에서 long long, long double 출력하기]〉, 《티스토리》, 2013-03-13 </ref>
  
==자바==
+
=== 자바 ===
자바에서 long형 크기는 16 bytes (64 bits)이며 int보다 크지만 int의 범위보다 큰 수를 할당해야 할 때는 숫자의 마지막에 L을 붙여야 한다는 점이다. 그렇지 않으면 컴파일러가 int로 인식하고 에러를 낸다는 특징이 있다. 다음은 비교 예시다.<ref name="자바"> 삐멜 소프트웨어 엔지니어, 〈[https://imasoftwareengineer.tistory.com/48 자바 변수와 자료형 (3) byte, short, int, long]〉, 《티스토리》, 2019-03-04 </ref>
+
자바에서 long형 크기는 16바이트(64비트)이며 int보다 크지만, int의 범위보다 큰 수를 할당해야 할 때는 숫자의 마지막에 L을 붙여야 한다. 그렇지 않으면 컴파일러가 int로 인식하고 에러를 낸다는 특징이 있다.<ref name="자바"> 삐멜 소프트웨어 엔지니어, 〈[https://imasoftwareengineer.tistory.com/48 자바 변수와 자료형 (3) byte, short, int, long]〉, 《티스토리》, 2019-03-04 </ref>
*예시1
+
 
 +
public class Main {
 +
    public static void main(String[] args) {
 +
          long val = 2147483648L;
 +
          System.out.println(val);
 +
    }
 +
  }
 +
실행 결과: 2147483648<ref name="자바"></ref>
 +
 
 +
위처럼 int보다 큰 값에는 L를 붙여야 함을 확인 할 수 있다.
 +
 
 
  public class Main {
 
  public class Main {
public static void main(String[] args) {
+
    public static void main(String[] args) {
System.out.println(Long.SIZE);
+
          System.out.println(Long.SIZE);
}
+
  }
 
  }
 
  }
 
  실행 결과: 64<ref name="자바"></ref>
 
  실행 결과: 64<ref name="자바"></ref>
*예시2
 
public class Main {
 
public static void main(String[] args) {
 
long val = 2147483648L;
 
System.out.println(val);
 
}
 
}
 
실행 결과: 2147483648<ref name="자바"></ref>
 
  
===변환===
+
; 변환
자바의 long은 형 변환을 할수있는 프로그램도 작성이 가능하다.
+
자바의 long은 형 변환을 할 수 있는 프로그램도 작성이 가능하다.
 +
 
 
*예시1
 
*예시1
 
  public class MyClass {
 
  public class MyClass {
89번째 줄: 146번째 줄:
 
  }
 
  }
 
  결과 -1234578901234567890<ref name="변환"> 〈[https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_long-String_%ED%98%95_%EB%B3%80%ED%99%98 자바 long-String 형 변환]〉, 《제타위키》 </ref>
 
  결과 -1234578901234567890<ref name="변환"> 〈[https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_long-String_%ED%98%95_%EB%B3%80%ED%99%98 자바 long-String 형 변환]〉, 《제타위키》 </ref>
 +
 
*예시2
 
*예시2
 
  public class MyClass {
 
  public class MyClass {
103번째 줄: 161번째 줄:
 
  -1234578901234567890<ref name="변환"></ref>
 
  -1234578901234567890<ref name="변환"></ref>
  
==파이썬==
+
=== 파이썬 ===
파이썬에서 long의 범위는 비트수는 무제한이고 (메모리가 허용하는 한), 표현 범위도 무제한이다.
+
파이썬에서 long의 범위는 메모리가 허용하는 한 비트 수는 무제한이고, 표현 범위도 무제한이다.<ref> 간단한 개발관련 내용, 〈[https://joochang.tistory.com/47 파이썬 수치 자료형의 표현 범위]〉, 《티스토리》, 2015-03-06 </ref> 다만, integer의 범위를 벗어나면 long integer형으로 표시된다.<ref> TechNote.kr, 〈[https://joochang.tistory.com/47 (02-2) Python - 숫자 (Numbers)]〉, 《티스토리》, 2016-08-07 </ref>
다음은 그 예시이다.<ref> 간단한 개발관련 내용, 〈[https://joochang.tistory.com/47 파이썬 수치 자료형의 표현 범위]〉, 《티스토리》, 2015-03-06 </ref>
 
 
  >>> a=1234567890L
 
  >>> a=1234567890L
 
  >>> type(a)
 
  >>> type(a)
 
  <type 'long'>
 
  <type 'long'>
참고 : integer의 범위를 벗어나면 long integer 형으로 표시된다. <ref> TechNote.kr, 〈[https://joochang.tistory.com/47 (02-2) Python - 숫자 (Numbers)]〉, 《기술노트》, 2016-08-07 </ref>
 
  
 
{{각주}}
 
{{각주}}
121번째 줄: 177번째 줄:
 
* 〈[https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_long-String_%ED%98%95_%EB%B3%80%ED%99%98 자바 long-String 형 변환]〉, 《제타위키》
 
* 〈[https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_long-String_%ED%98%95_%EB%B3%80%ED%99%98 자바 long-String 형 변환]〉, 《제타위키》
 
* 간단한 개발관련 내용, 〈[https://joochang.tistory.com/47 파이썬 수치 자료형의 표현 범위]〉, 《티스토리》, 2015-03-06
 
* 간단한 개발관련 내용, 〈[https://joochang.tistory.com/47 파이썬 수치 자료형의 표현 범위]〉, 《티스토리》, 2015-03-06
* TechNote.kr, 〈[https://joochang.tistory.com/47 (02-2) Python - 숫자 (Numbers)]〉, 《기술노트》, 2016-08-07
+
* TechNote.kr, 〈[https://joochang.tistory.com/47 (02-2) Python - 숫자 (Numbers)]〉, 《티스토리》, 2016-08-07
  
 
==같이 보기==
 
==같이 보기==
 +
* [[int]]
 
* [[short]]
 
* [[short]]
 
* [[long long]]
 
* [[long long]]
* [[CPU]]
 
* [[컴파일러]]
 
 
* [[C99]]
 
* [[C99]]
 
* [[윈도우]]
 
* [[윈도우]]
 
* [[리눅스]]
 
* [[리눅스]]
* [[오에스텐]]
+
* [[맥OS]]
 +
* [[int]]
 +
* [[중앙처리장치]]
 +
* [[컴파일러]]
  
 
{{프로그래밍|검토 필요}}
 
{{프로그래밍|검토 필요}}

2021년 9월 10일 (금) 17:08 기준 최신판

longint형보다 더 많은 용량이 필요할 때 쓰이는 정수형 변수문이다.

개요[편집]

long은 int가 32비트인 중앙처리장치 컴파일러를 사용할 때, 64비트 정수형이 필요할 때 사용하는 자료형이다. C99의 정수형 표준을 따르지 않는 일부 컴파일러는 long int만으로는 64비트를 지원하지 않음으로 주의해야 한다. long long을 사용할 때도 오래된 버전의 컴파일러에서는 지원하지 않는 경우도 있음으로 주의해야 한다. 8비트 중앙처리장치의 경우, 주로 int만으로는 16비트만을 지원하므로 32비트가 필요하다면 long int를 사용한다. 이처럼 long을 사용할 때는 상황에 따라 다르므로 컴파일러의 성능을 확인해야 한다.[1]

크기[편집]

long은 운영체제마다 크기가 다 다르며 종류는 윈도우, 리눅스, 맥OS 등이 있다.[2]

[3]
자료형 크기 값의 범위
long 4바이트 -2,147,483,648 ~ 2,147,483,647
unsigned long 4바이트 0 ~ 2,147,483,647 + 2,147,483,648
long long 8바이트 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned long long 8바이트 0 ~ 9,223,372,036,854,775,807 + 9,223,372,036,854,775,808
운영체제별 크기
[2]
운영체제 CPU(플랫폼) 바이트 크기 비트 크기
윈도우 x86(32비트) 4바이트 32비트
x86-64(64비트) 4바이트 32비트
리눅스 x86(32비트) 4바이트 32비트
x86-64(64비트) 8바이트 64비트
맥OS X x86(32비트) 4바이트 32비트
x86-64(64비트) 8바이트 64비트

유형[편집]

C언어[편집]

C언어에서는 long의 형태에 따라 서식 형태가 달라진다.

printf문

다음은 printf문에 나타내는 long의 형태이다.

[3]
서식문자 출력대상 출력형태
%ld(엘디) long 부호가 있는 10진수 정수
%lld(엘엘디) long long 부호가 있는 10진수 정수
%Lf(엘에프) long double 10진수 방식의 부동소수점 실수

위 내용처럼 한 예시로 나타낼 수 있다.

#include <stdio.h>
int main() {
    long ln = 123456789L;
    long long lln = 1234567890123456789LL;
    double dx = 1.234567890123456789;
    long double ldx = 1.234567890123456789L;
    printf("ln = %d\n", ln);
    printf("ln = %ld\n", ln);
    printf("lln = %lld\n", lln);
    printf("dx = %.9f\n", dx);
    printf("dx = %.19f\n", dx);
    printf("ldx = %.19Lf\n", ldx);
    return 0;
}
ln = 123456789
ln = 123456789
lln = 1234567890123456789
dx = 1.234567890
dx = 1.2345678901234566904
ldx = 1.2345678901234567890[4]

자바[편집]

자바에서 long형 크기는 16바이트(64비트)이며 int보다 크지만, int의 범위보다 큰 수를 할당해야 할 때는 숫자의 마지막에 L을 붙여야 한다. 그렇지 않으면 컴파일러가 int로 인식하고 에러를 낸다는 특징이 있다.[5]

public class Main {
   public static void main(String[] args) {
          long val = 2147483648L;
          System.out.println(val);
   }
 }
실행 결과: 2147483648[5]

위처럼 int보다 큰 값에는 L를 붙여야 함을 확인 할 수 있다.

public class Main {
   public static void main(String[] args) {
          System.out.println(Long.SIZE);
  }
}
실행 결과: 64[5]
변환

자바의 long은 형 변환을 할 수 있는 프로그램도 작성이 가능하다.

  • 예시1
public class MyClass {
    public static void main(String[] args) {
        long number = -1234578901234567890L;
        String str = String.valueOf(number);
        System.out.println(str);
    }   
}
결과 -1234578901234567890[6]
  • 예시2
public class MyClass {
    public static void main(String[] args) {
        long number = -1234578901234567890L;
        String str = new Long(number).toString();
        System.out.println(str);
    }   
}
결과 runbox.java:4: warning: [removal] Long(long) in Long has been deprecated and marked for removal
        String str = new Long(number).toString();
                     ^
1 warning
-1234578901234567890[6]

파이썬[편집]

파이썬에서 long의 범위는 메모리가 허용하는 한 비트 수는 무제한이고, 표현 범위도 무제한이다.[7] 다만, integer의 범위를 벗어나면 long integer형으로 표시된다.[8]

>>> a=1234567890L
>>> type(a)
<type 'long'>

각주[편집]

  1. long 정수형〉, 《위키백과》
  2. 2.0 2.1 밤머리, 〈Microsoft Visual C++ 프로그래밍 자료형 총정리〉, 《티스토리》, 2018-07-23
  3. 3.0 3.1 Hello World, 〈처음하시는 분들을 위한 C언어 기초강의 시즌2 - 06 (자료형2)〉, 《티스토리》, 2018-07-08
  4. 우균, 〈printf에서 long long, long double 출력하기〉, 《티스토리》, 2013-03-13
  5. 5.0 5.1 5.2 삐멜 소프트웨어 엔지니어, 〈자바 변수와 자료형 (3) byte, short, int, long〉, 《티스토리》, 2019-03-04
  6. 6.0 6.1 자바 long-String 형 변환〉, 《제타위키》
  7. 간단한 개발관련 내용, 〈파이썬 수치 자료형의 표현 범위〉, 《티스토리》, 2015-03-06
  8. TechNote.kr, 〈(02-2) Python - 숫자 (Numbers)〉, 《티스토리》, 2016-08-07

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 Long 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.