프로그래밍 언어

    음수 정수의 비트 표현

    32bit 정수 자료형 int는 $-2^{31}$에서 $2^{31}-1$까지 표현 가능하다. 음수는 덧셈에 바로 사용할 수 있도록 표현되어 있다. 예를 들어, $-1$은 $2^{32}-1$ = 0b1111 ... 1111로 표현되어 있다. $ -1 \equiv 2^{32}-1 \pmod{2^{32}}$ 이므로 32비트 범위에서 $-1$을 더하는 것과 $2^{32}-1$을 더하는 것의 효과가 같기 때문이다. 같은 이유로 $-2$는 $2^{32}-2$ = 0b1111 ... 1110으로 표현된다. 또한 $-2^{31}$은 $2^{32}-2^{31}$ = 0b1000 ... 0000로 표현된다.

    Iterable & Iterator

    결론 클래스를 Iterable 하게 만들어 주고 싶다 $\Rightarrow$ 맞춤형 Iterator 객체를 만들어준다. Iterable 클래스(e.g. LinkedList)가 Iterable 인터페이스를 구현하면 public Iterator iterator() 구현이 강제된다. 물론, 범용성을 위해 LinkedList는 List 인터페이스를 구현하고, List 인터페이스가 Iterator를 상속하는 구조가 더 좋은 것 같다. iterator()는 for-each 문이나 Iterator 객체를 통한 반복에 사용된다. List list = new LinkedList(); for (Integer x : list) { ... } Iterator iter = list.iterator(); while (iter...

    모듈과 패키지

    JAVA 각각의 파일이 클래스파일 클래스파일 - 패키지(directory) - 패키지(directory) - ... - 모듈(이건 필수 아님) 선언 순서 - 패키지선언 - import - 클래스선언 e.g. >> 패지키이름.클래스이름.함수(); e.g. import 패키지이름.클래스이름 >> 클래스이름.함수(); e.g. import 패키지이름.* (해당 패키지에 포함된 클래스를 모두 import) Python 모듈(.py 파일 자체가 모듈) - 패키지 e.g. import 패키지이름.모듈이름 >> 패키지이름.모듈이름.함수() e.g. from 패키지이름 import 모듈이름 >> 모듈이름.함수() Python 모듈 참고 1. 모듈에 print(3+4) 같이 코드 있을 때 import만 해도 저게 같이 ..

    Comparable vs Comparator

    Comparable vs Comparator

    Comparable 인터페이스 String, Integer 처럼 비교가 가능한 객체가 구현하는 인터페이스. compareTo(Object obj) 메소드를 구현해 객체 자신과 파라미터로 들어온 변수를 비교해 결과값을 정수로 반환한다. 기본 정렬 기준을 제공한다. Comparator 인터페이스 기본 정렬 기준과 다른 정렬 기준을 적용하고 싶을 때 비교를 위한 객체를 만들고 Comparator 인터페이스를 구현하게끔 한다. compare(Object o1, Object o2) 메소드를 구현해 파라미터로 들어온 변수들을 비교해 결과값을 정수로 반환한다. 예시 String[] strArr = { ... } Arrays.sort(strArr); # String 클래스의 compareTo 메소드로 정렬 Arrays..