JAVA/JAVA 이용하기

[JAVA] JAVA 반올림, bitwise연산자, 변수교환방법

h0-0cat 2023. 6. 9. 20:35
728x90

bitwise
 * bitwise 연산자 : 비트 단위로 계산한다.(0은 거짓, 1은 참)
 * ~ : NOT
 * | : OR
 * & : AND
 * ^ : XOR(두개 값이 다를때만 참인 연산)

// 긁지않은 개발자
public class HEx {
	public static void main(String[] args) {
		
		int x = 23, y=18;
		// ~는 1의 보수를 구해준다.
		// 1의 보수 + 1은 2의 보수
		// 뺄셈은 2의 보수를 더해주면 된다. 
		System.out.printf("%d - %d = %d\n", x, y, x - y);
		System.out.printf("%d - %d = %d\n", x, y, x + (~y+1));
		System.out.println();
		
		int z = ~y;
		// Integer.toBinaryString(정수) : 정수를 2진수 문자열로 만들어 준다.
		System.out.println(Integer.toBinaryString(y));
		System.out.println(Integer.toBinaryString(z));
		
		x=3; y=5;
		z = x | y;
		System.out.println(x + " | " + y + " = " + z);
		
		z = x & y;
		System.out.println(x + " & " + y + " = " + z);
		
		z = x ^ y;
		System.out.println(x + " ^ " + y + " = " + z);
		
	}
}

 

실행 결과

23 - 18 = 5

23 - 18 = 5

10010

11111111111111111111111111101101

3 | 5 = 7

3 & 5 = 1

3 ^ 5 = 6

 


// 두개의 변수값을 교환할때
// 별도의 변수를 사용하는 방법

// 긁지않은 개발자

public class OpEx09 {
	public static void main(String[] args) {
		int x = 10, y = 20;
		System.out.println(x + ", " + y);

		int z = x;
		x = y;
		y = z;
		System.out.println(x + ", " + y);
		
        x = x ^ y;
		y = x ^ y;
		x = x ^ y;
		System.out.println(x + ", " + y);
	}
}

실행 결과

10, 20

20, 10

10, 20

 

 


반올림 관련

// 긁지않은 개발자
public class HEx10 {
	public static void main(String[] args) {
		double d = 45678.5678;
		
		System.out.println("d = " + d);
		// Math.round(실수) : 반올림 함수
		System.out.println(Math.round(d)); // 소수 첫째 자리에서 반올림 한다.
	}
}

실행 결과

d = 45678.5678

45679


 

// 소수 두번째 자리에서 반올림하시오

// 긁지않은 개발자
		double d = 45678.5678;

		System.out.println(Math.round(d*10));
		System.out.println(Math.round(d*10) / 10.0);

실행 결과

s456786
45678.6


//  소수 세번째 자리에서 반올림하시오

// 긁지않은 개발자
		double d = 45678.5678;
        System.out.println(Math.round(d*100) / 100.0);

실행 결과

45678.57


//  1의 자리에서 반올림하시오

// 긁지않은 개발자
	double d = 45678.5678;
		System.out.println(Math.round(d/10) * 10);

실행 결과

45680


// 10의 자리에서 반올림하시오

// 긁지않은 개발자
		double d = 45678.5678;
        System.out.println(Math.round((d-3)/10) * 10);

실행 결과

45700


//  7이하 버림 8이상 올림을 하시오

// 긁지않은 개발자
		double d = 45678.5678;
        d = 17;
		System.out.println(Math.round((d-3)/10) * 10);
		d = 18;
		System.out.println(Math.round((d-3)/10) * 10);

실행 결과

10

20

 

//  2이하 버림 3이상 올림을 하시오

// 긁지않은 개발자
		double d = 45678.5678;
        d = 12;
		System.out.println(Math.round((d+2)/10) * 10);
		d = 13;
		System.out.println(Math.round((d+2)/10) * 10);

실행 결과

10

20

728x90