Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- array
- print()
- 배열
- 산술 쉬프트 연산자
- 순환문
- 안드로이드스튜디오
- 증감연산자
- 명명규칙
- 다차원배열
- 콘솔출력문
- 논리 쉬프트 연산자
- 기본형호출
- 비트논리연산자
- while문
- 타입변환
- 삼항 연산자
- for문
- 참조형호출
- Java
- 사용자입력Switch문
- 비정방행렬
- dowhile문
- 자바
- println()
- 변수유효범위
- 대입 연산자
- 비교연산자
- 다중if
- 단순if
- 문자열
Archives
- Today
- Total
신입개발자
연산자2 본문
public class 연산자2 {
public static void main(String[] args) {
// A) 산술 쉬프트 연산자 : 부호비트는 고정 (= 부호 변화가 없다)
// Left 시프트는 그 결과 숫자가 커진다, 2의 n제곱
// System.out.println(3 << 1); //6, 2배//0011(3의 2진수)
// System.out.println(-3 << 1); //-6, 2배
// System.out.println(3 << 2); //12, 4배 -> 1100이 된다는 소리
// System.out.println(-3 << 2); //-12, 4배
for(int i =0; i<4; i++) {
System.out.printf("3 << %d = %32s, %d\n", i, Integer.toBinaryString(3 << i), (3 << i));
}
System.out.println();
for(int i =0; i<4; i++) {
System.out.printf("-3 << %d = %32s, %d\n", i, Integer.toBinaryString(-3 << i), (-3 << i));
}
System.out.println();
//right 시프트는 그 결과 숫자가 작아짐, 2의 1/n제곱
// System.out.println(5 >> 1); //2, floor(5/2), 좌측의 정수값 //0101(5의 2진수)
// System.out.println(-5 >> 1); //-3, floor(-5/2), 좌측의 정수값
// System.out.println(5 >> 2); //1, floor(5/4)
// System.out.println(-5 >> 2); //-2, floor(-5/4)
for(int i =0; i<4; i++) {
System.out.printf("5 >> %d = %32s, %d\n", i, Integer.toBinaryString(5 >> i), (5 >> i));
}
System.out.println();
for(int i =0; i<4; i++) {
System.out.printf("-5 >> %d = %32s, %d\n", i, Integer.toBinaryString(-5 >> i), (-5 >> i));
}
System.out.println();
//B) 논리 쉬프트 연산자 : 부호비트도 이동 (*음수는 경우에 따라 양수로 바뀔 수도 있음)
// 용도 : (a >>> n) & "...0001"과 같이 사용하면 a의 특정 n번째 비트값을 추출할 수 있음(비트단위로 저장)
//논리 쉬프트는 >>> 만 존재 : 양수일 땐 >> 와 동일
// System.out.printf("%32s >>> 1 = %32s, %d\n", Integer.toBinaryString(5),
// Integer.toBinaryString(5 >>> 1), 5 >>> 1);
// ...0010, 10진수로 2
//101 >>> 1 = 10, 2
// System.out.printf("%32s >>> 31 = %32s, %d\n", Integer.toBinaryString(-5),
// Integer.toBinaryString(-5 >>> 31), -5 >>> 31);
// ...0001, 10진수로 1, 부호변동
//'1'1111111111111111111111111111011 >>> 31 = 1, 1
for(int i =0; i<4; i++) {
System.out.printf("5 >>> %d = %32s, %d\n", i, Integer.toBinaryString(5 >>> i), (5 >>> i));
}
System.out.println();
for(int i =0; i<4; i++) {
System.out.printf("-5 >>> %d = %32s, %d\n", i, Integer.toBinaryString(-5 >>> i), (-5 >>> i));
}
System.out.println();
}
}
Comments