책 내용 질문하기
102페이지 문제 3번 질문입니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
102
조회수
190
작성일
2017-03-16
작성자
탈퇴*원
첨부파일

안녕하십니까?

102페이지 문제 3번 질문입니다.

public class Problem {

public static void main(String[] args) {

byte a = 15 , b = 19;

System.out.printf("%d/n", ~a) ;

위의 문제에서 a값을 비트로 표현하면 0000 1111 이고,

~a 값을 구하면 1111 0000 입니다.

여기서 2의 보수를 구해야하는데 제가하면 0000 1111 이라고 생각되는데

해답지에는 0001 0000 입니다.

2의 보수를 구하는 방법을 모르겠습니다.

답변
2017-03-16 09:28:39

안녕하세요.

2의 보수는 1의 보수를 변환한 뒤 +1을 하면 됩니다.

쉽게 구하는 방법은 오른쪽에서 왼쪽 방향으로 이동하면서 처음 1이 나올때까지 그대로 적어주고 나머지는 0은 1로, 1은 0으로 적어줍니다.

그래서 1111 0000

인 경우 오른쪽에서 왼쪽으로 가장 처음 1이 나온 네 번째 1까지는 그래도 적습니다.

1 0000

그 이후 1은 0으로 변경합니다.

0001 0000

일반적인 방법으로 변경해 보겠습니다.

1111 0000 -> 1의 보수로 변환(1은 0, 0은 1) -> 0000 1111

0000 1111 -> 2의 보수로 변환(1의 보수 +1) -> 0000 1111 + 1 -> 0001 0000

오늘도 즐거운 하루 되세요.

  • *
    2017-03-16 09:28:39

    안녕하세요.

    2의 보수는 1의 보수를 변환한 뒤 +1을 하면 됩니다.

    쉽게 구하는 방법은 오른쪽에서 왼쪽 방향으로 이동하면서 처음 1이 나올때까지 그대로 적어주고 나머지는 0은 1로, 1은 0으로 적어줍니다.

    그래서 1111 0000

    인 경우 오른쪽에서 왼쪽으로 가장 처음 1이 나온 네 번째 1까지는 그래도 적습니다.

    1 0000

    그 이후 1은 0으로 변경합니다.

    0001 0000

    일반적인 방법으로 변경해 보겠습니다.

    1111 0000 -> 1의 보수로 변환(1은 0, 0은 1) -> 0000 1111

    0000 1111 -> 2의 보수로 변환(1의 보수 +1) -> 0000 1111 + 1 -> 0001 0000

    오늘도 즐거운 하루 되세요.

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