본문 바로가기

컴퓨터공부/정보처리기사

[정보처리기사] java 의 비트 계산법 ~a, a^b, a&b, a|b

by Life & study 2023. 7. 7.
반응형

[정보처리기사] java의 비트 계산법 ~a,  a^b, a&b, a|b

 

[정보처리기사] java 의 비트 계산법 ~a,  a^b, a&b, a|b

 

 

정답

-16

28

3

31

 

 

 

("%d\n" , ~a);  의 계산법  


2의 보수 = 1의 보수 +1 (뒤집힌다)


0000 1111
1111 0000


1000 1111  = 2의 보수 = 1의 보수 +1 (뒤집힌다)
+          1

= 10010000 = > ~a => -16

 

~a = -16

 

("% d\n" , a^b); 의 계산법 

 

a^b = 서로 다를 때 1을 나타낸다.

0000 1111
0001 0011
=0001 1100

= 28

 

("%d\n" , a&b); 의 계산법 

 

a&b 둘다 1이라고 할 때 1을 나타낸다.

0000 1111
0001 0011
0000 0011 = 3

= 3

 

("%d\n" , a|b ); 의 계산법 

 

a|b 하나라도 1이면 =>1이다.

0000 1111
0001 0011

0001 1111 = 31

= 31 

 

java 의 비트 계산법

 

 

Java에서 `byte` 타입을 사용하면 값이 8비트로 표현되기 때문에, `byte a = 15`인 경우 a는 `00001111`로 표현됩니다. 이것은 이미 바이트(8비트) 표현을 사용하고 있기 때문에 앞서 설명한 8비트 표현 과정을 거칠 필요가 없습니다.

일반적인 10진수에서 2진수로의 변환에서 'byte' 키워드가 없다면(예: `int a = 15`), a는 2진수로 '1111'로 계산됩니다. 이 경우 추가적으로 8비트로 표현하려면 위에서 설명한 방식처럼 스트링 포맷 작업을 수행해야 합니다.

결론적으로, byte 타입을 사용할 때 8비트 표현이 자동으로 적용되며 a = 15 라면 '00001111'로 계산됩니다. 반면 기본적인 10진수에서 2진수로 바꾼다면 a = 15 일 때 '1111'로 계산되는 것이 맞습니다. 이 경우에도 필요시 8비트로 만들어 진짜로 나타낼 수 있습니다.

 

 

이 문제에서, 0000 1111로 계산되는 이유로는 Byte a  = 15라고 계산 했기에 

 

0000 1111 로 계산된 것이고,

 

원래는 byte를 사용하지 않는다면, 1111 이 맞다.

 

 


 

반응형

댓글