책 내용 질문하기
java 2진수 계산문제 질문입니다!
도서
2018 시나공 정보처리기능사 실기
페이지
0
조회수
294
작성일
2019-06-26
작성자
탈퇴*원
첨부파일

public class Main { 

public static void main(String[] args) {

int a = 2, b = 3, c = 4, d, e;

d = a & b & -b;

e = a | b & c;

System.out.printf("%d %d", d, e);

}

}

d의 결과가 0으로 나옵니다.  

왜0으로 나오는지 전혀 모르겠네요ㅠㅠ

알려주시면 감사하겠습니다!

답변
2019-06-27 10:45:21

안녕하세요 길벗수험서 운영팀입니다.

 

간단합니다.

 

2 & 3 & -3 을 차례대로 수행해보면 됩니다.

비트 and의 결합규칙은 왼쪽부터 이므로 앞에서 부터 수행합니다.

 

2 & 3은

0010 (2)

0011 (3)

--------

0010 이 됩니다.

 

-3은 음수이므로 2의 보수화 시키면 1101이 됩니다.

위의 결과에서 1101을 and연산하면,

0010

1101

------

0000 이 됩니다.

 

때문에 답은 0이 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-06-27 10:45:21

    안녕하세요 길벗수험서 운영팀입니다.

     

    간단합니다.

     

    2 & 3 & -3 을 차례대로 수행해보면 됩니다.

    비트 and의 결합규칙은 왼쪽부터 이므로 앞에서 부터 수행합니다.

     

    2 & 3은

    0010 (2)

    0011 (3)

    --------

    0010 이 됩니다.

     

    -3은 음수이므로 2의 보수화 시키면 1101이 됩니다.

    위의 결과에서 1101을 and연산하면,

    0010

    1101

    ------

    0000 이 됩니다.

     

    때문에 답은 0이 됩니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.