(C++) 참고용 정리 - 변수의 주소
1 | #include <iostream> |
(Java) 자바의 정석 3판 004일차 - 연산자(우선 순위 및 결합 규칙), switch 문
(Java) 자바의 정석 3판 003일차 - 형변환, 정규화, 연산자
형변환(캐스팅, Casting)
기본형(primitive type)에서 boolean을 제외한 나머지 타입들은 형변환이 가능.
역시 자스를 먼저 배우고 나니 자스의 자유로운 형변환이 그리울 때가 있다.
또한 기본형과 참조형(reference type)간의 형변환은 불가능하다.
또한 실수형을 정수형으로 바꾸면 반올림 하지 않고 소수점 이하를 다 짜른다.
왜냐하면 정수형에서는 소수점 이하를 표현할 방법이 없기 때문이다.
형변환을 할 때 캐스팅 연산자를 써줘야하지만 생략하면 자동으로 컴파일러가 붙여준다.
하지만 손실이 발생할 수 있는 경우에는 오류가 발생한다.
따라서 손실이 발생하는 경우에는 무조건 캐스팅 연산자를 써줘야한다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class test {
public static void main(String[] args) {
char ch = 'A';
short num = 255;
int num2 = num;
num2 = ch;
long num3 = 12345678781234L;
// float은 4byte지만 부동 소수점 형태로 표현되기 때문에 8byte인 long보다 더 넓은 범위를 표현할 수 있다.
// 하지만 정밀도 때문에 오차가 발생할 수는 있다.
float num4 = num3;
double num5 = num3;
// ch와 num은 둘 다 2byte지만 ch는 unsigned short와 같이 부호가 없으므로 표현 범위가 다름.
// 따라서 서로 손실이 발생하므로 형변환 연산자가 꼭 존재해야함.
ch = (char)num;
num = (short)ch;
}
}
십진수를 2진수로 보기
(Java) 자바의 정석 3판 002일차 - char의 형변환과 실수형(부동 소수점)
char의 연산자별 형변환.
전위&후위 연산자는 형변환을 하지 않고
기타 연산자는 int로 형변환을 함.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class test {
public static void main(String[] args) {
char ch = 65;
System.out.println(ch++); // 'A'
System.out.println(ch); // 'B'
System.out.println(++ch); // 'C'
ch = 65;
System.out.println(ch); // 'A'
System.out.println(ch+0); // 65
System.out.println(+ch); // 65
System.out.println(-ch); // -65
System.out.println(ch << 1); // 130
System.out.println(ch); // 'A'
short num = 0;
// num = ch + 1; // error
int num2 = 0;
num2 = ch + 1; // 에러가 나지 않음.
}
}
- 170102 내용 수정
형변환은 쉬프트 연산자(<<, >>), 증감 연산자(++, –)에서만 일어나지 않음.
(Java) 자바의 정석 3판 001일차 - 컴퓨터 이론, 리터럴 & 변수 & 변수
컴퓨터는 왜 2진수를 사용할까?
10진법이 익숙한 이유는 손가락이 10개이기 때문이지 않을까?
에니악은 10진법 체계였지만 전기회로는 전압이 불안정해서 전압을 10단계로 나누어 처리하는데 한계가 있음
에드박은 단 두가지 단계, 전기가 흐르면 1, 전기가 흐르지 않으면 0만으로 동작하게 설계되었다
따라서 컴퓨터와 같은 전기회로는 2진 체계를 사용하게 되었다.
그렇다면 8진수와 16진수는 왜 생겼을까?
2진수는 숫자를 표현하기 위해 상당히 많은 자릿수를 차지한다.
코딩할 때도 이렇게 많은 자릿수는 가독성을 해칠 수 있다.
따라서 이런 단점을 보완하기 위해 8진수와 16진수가 등장했다.
그렇다면 왜 8진수와 16진수일까?
2진수 2자리로는 4진수를
2진수 3자리로는 8진수를
2진수 4자리로는 16진수를 표현할 수 있다.
2진수 2자리는 그닥 많은 자릿수를 절약할 수 없어서 사용을 안 하게 된 게 아닐까 싶다…
8진수를 사용하는 대표적인 예는 리눅스나 FTP 등에서 파일이나 폴더에 관한 권한을 표현하기 위해 많이 쓰인다.
777 을 예로 들면
r 읽기 허용(4) w 쓰기 허용(2) x 실행 허용(1) 을 다 더하면 7이 나오고
u 사용자(소유자) g 그룹 o 기타(사용자와 그룹을 제외한 사람) 순서로 기술하면 된다.
16진수를 사용하는 대표적인 예는 rgb 컬러 코드(#ff00ff), 유니코드(\u0061, U+0061, 0x0061 등등)에서 쓰인다.
(ES6) Interface
이 포스트는 GDG 2016에서 발표하신 맹기완 님의 발표를 듣고 감명을 받아 정리해본 글이다.
이터레이터 인터페이스와 이터러블 인터페이스는 다음 포스트에서 정리할 예정이다.
이 글을 읽고난 후에 (ES6) Symbol에 대한 글부터 읽어보길 바란다.
다소 짧아서 어디 공유하기 부끄럽지만 이렇게 짧은 내용들이 집중해서 읽기에 참 좋은 것 같다.
Interface
ECMAScript2015(이하 ES6) 들어서서 인터페이스
는 고유 명사
가 되었다.
고유명사(固有名詞)
낱낱의 특정한 사물이나 사람을 다른 것들과 구별하여 부르기 위하여 고유의 기호를 붙인 이름.
(ES6) Number 객체와 함수
(ES6) 숫자형
이 글을 읽고 (ES6) Number 객체와 함수를 이어서 보는 걸 추천한다.
자료형
ES에서 숫자형은 단 하나의 자료형 뿐이다.
Double: 자바나 C 등등의 언어에서 실수를 표현하기 위한 자료형, 8Byte = 64Bit
Double-precision floating-point format
JetBrains 회사 제품의 라이센스
여름방학에 현장실습을 하면서 다음과 같은 경험을 했다.
A: 권성 씨, 에디터 좋다. 뭐 써요?
나: 저 웹스톰이요. 저희 학교는 교직원에게만 이메일을 줘서 친구 걸로 인증했어요.
A: 뭐 같은 대학생이니까 상관 없으려나…
(잠시 후…)
A: 어, 웹스톰은 기업용이 아니면 기업에서는 쓰면 안 된다고 하는데요?
나: (나니?!)
국내 유통 업체에서 팔고있는 웹스톰 개인용 라이센스
내가 느끼기에는 ‘개인용’이란 단어를 교묘하게
‘가정용/학생용’이라는 단어로 바꿔치운 상술로 밖에 보이지 않았다.
이 당시에는 서로 바빠서 그냥 무시하고 웹스톰을 계속 썼었는데,
나중에 취직을 하게 되면 계속 써야할텐데 그 비싼 기업용 라이센스를
사야하나 싶어서 이번에 집중적으로 알아보았다.