일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jQuery
- 성적프로그램
- ||
- sql developer
- 답변형 게시판
- 제약조건
- JSP
- SQL
- 모조칼럼
- HTTP Status 404
- rownum
- Java
- HTTP Status 500
- 한글 인코딩
- github
- alias
- git
- JavaScript
- Oracle SQL
- distinct
- group by
- 과정평가형
- HTML
- CRUD
- tomcat
- 이클립스
- Bootstrap
- 부트스트랩
- Oracle DB
- oracle
초급의 끄적거림
[JAVA] bit 연산자 (비트곱, 비트합), shift연산자, 보수 본문
[bit 연산자]
⊙ 컴퓨터 용량의 단위
⊙ 컴퓨터의 신호 체계 : 0, 1
⊙ 8bit (=1byte) : 0이나 1이 1bit이고 사람이 인식할 수 있는 신호로 보기 위해서는 8개가 모여서 8bit가 되어야함.
예) 01000001 = A
(최소) 2byte 용 언어 → 한글, 한자, 일어 등
⊙ 2^10 (2의 10승) = 1024byte → kilo byte
⊙ 2^20 (2의 20승) → mega byte
⊙ 2^30 (2의 30승) → giga byte
⊙ KB < MB < GB < TB < NB
System.out.println(16<<3); // 16*2의3승 - 128 비교연산자 <를 2개 쓴 것, 쉬프트 연산자
System.out.println(16>>3); // 16/2의3승 - 2
[shift 연산자]
⊙ << : left Shift - 대상*2의 n승
⊙ >> : right Shift - 대상/2의 n승
⊙ n은 이동 bit 수
수의 체계 : 2진수 0 1
8진수 0 1 2 3 4 5 6 7
10진수 0 1 2 3 4 5 6 7 8 9
16진수 0 1 2 3 4 5 6 7 8 9 A B C D E F - 10~15는 영어로 표현하기도 함
대소문자 구별없이 A부터
문) 10진수 5를 2진수로 변환 → 101 → 8byte 채우려고 00000101 로 적으면 됨
2진수 101 를 10진수로 101에서 1의 자리부터 2의 0승 1승 2승, n의 0승은 1에 해당
문) 10진수 9를 2진수로 바꾸시오 → 00001001
<빠르게 진법 계산 하는 방법>
128 64 32 16 8 4 2 1
2의 ~~2승 1승 0승
1 0 0 1 → 9 : 9가 되려면 더해야하는 수에 1을 넣어주면 됨
1 0 1 → 5
1 1 0 1 → 13 : 더하는데 필요한 숫자에만 1을 넣어주면 됨
1 0 0 0 0 → 16을 2진수로 바꿨을 때
00010000 (= 10진법의 16)
<<3 10000 → 10000000 : 왼쪽 방향으로 3이기 때문에 왼쪽의 3칸이 없어지고 8자리를 맞추기 위해 뒤에 3칸이 붙음. 10000000 → 128
>>3 00010 → 00000010 : 오른쪽 방향으로 3이기 때문에 오른쪽 3칸이 없어지고 8자리를 맞추기 위해 앞에 3칸이 붙음. 00000010 → 2
[보수]
⊙ 보색과 비슷한 의미로서 '반대의 수'를 의미
⊙ ~ : 비트연산자, 1의 보수 연산자
System.out.println(~5); //-6
[비트곱 / 비트합]
⊙ 비트곱 : & 사용
⊙ 비트합 : | 사용
System.out.println(5&3); //&&가 아닌 &만 사용 → 비트곱
System.out.println(5|3); //||가 아닌 |만 사용 → 비트합
10진수 5 → 2진수 00000101
10진수 3 → 2진수 00000011
00000101 00000101
& 00000011 | 00000011
------------- -------------
00000001 =1 00000111 =7(1+1 = 1로 표현, 둘 중하나라도 비트값이 1이면 1을 반영)
'JAVA' 카테고리의 다른 글
[JAVA] Eclipse 단축키 (0) | 2019.08.29 |
---|---|
[JAVA] if 문, switch문 (+ 연습문제) (0) | 2019.08.19 |
[JAVA] 연습문제 (0) | 2019.08.19 |
[JAVA] 삼항연산자, 대입연산자 (0) | 2019.08.19 |
[JAVA] 자료형 변환 Datatype Conversion (자동형, 강제형 변환, 아스키 코드) (0) | 2019.08.19 |