반드시 이 수가 양수임을 나타내고 싶을 때 많이 씀
1) 크기를 가리 킬 때,
size_t라는 타입을 많이 쓰고, 이 타입은 unsigned int나 unsgined long, unsigned long long을 가지게 됨.
2) 배열의 인덱스를 쓸 때 도 unsigned를 쓰게 됨. 배열의 index는 0부터 시작이니까.
음수는 뭐 특별한 구조체를 만들어서 쓰면 안될 건 없긴함.
파이썬 같은거는 인덱스로 -1을 주면 가장 끝에 있는 걸 참조하던가 하니까.
3) 비트 연산을 할 때 씀. 비트 시프트 연산(<<, >>)을 해서 쓸 때,
만약 음수라면 MSB인가? 가장 큰 비트가 1인 경우에 >>를 하면 빈 공간이 1로 채워져서 비트 연산에 쓰기 어려움.
1로 채워지는 성질을 이용하려는 비트 연산이라면 좀 다를 듯
4) 논리적으로 이 수가 반드시 양수임을 나타내고 싶을 때. 그냥 인간 세상의 많은 것들이 대부분의 양의 정수니까, 생각보다 양의 정수 쓸 일이 많음.
3)은 0으로 채워질지 1로 채워질지가 implementation defined라서 unsigned 쓰는거임. 무조건 1로 채워지는거 아니다
오 그렇구만
0을 채우면 logical right shift, 1을 채우면 arithmetic right shift라고 하는데 대부분 arithmetic이긴 함
근데 -1 >> 1은 -1인데 -1/2는 0이라서 조심은 해야지
오 그렇구만
비트연산 할때 쓰는걸 아예 까먹고 있었네 ㄳㄳ
2번. 음수는 뭐 특별한 구조체를 만들어서 쓰면 안될 건 없긴함. 이게 무슨 말임?
음수 인덱스를 받을 구조체를 만든다 머 이런것같인데
int는 최대 2^31-1까지 밖에 표현 못하고 unsigned는 2^32-1까지 표현 가능