게시판

검색 결과: 21

, 도장_ 관리자님이 작성
 
1.    num1의 비트를 왼쪽으로 3번 이동한 값으로 flag의 비트 켜기
2.    num2의 비트를 오른쪽으로 2번 이동한 값으로 flag의 비트 끄기
3.    flag의 첫 번째 비트 토글하기

문제를 보면

1번에서 flag의 값이 바뀌고

다시 2번에서 flag의 값이 바뀌고

다시 3번에서 flag의 값이 바뀝니다.

그래서 최종적으로 바뀐 flag의 값이 예시에서 136이 되는 겁니다.

처음 입력된 상태에서 flag 값이 바뀌지 않은 상태라면 질문한 144가 되는 게 맞습니다.


, 지 지님이 작성
 

토글에서 오류가 발생해서... 못 넘어가고 있습니다

flag ^= 1<<7;

을 실행 시 결과값이 144가 나옵니다.

손으로 풀어봐도 flag ^= 1 << 7; 은 144가 나오는데...

0001 0000 ^ 1000 0000 수행 시 1001 0000 이 나오니

답이 144로 출력되는 것이 맞지 않나요?ㅜㅜ



 

unsined char는 1바이트죠. 

1바이트는 8비트   8비트에서 첫번째 비트를 키면 값이 뭘까요?
1000 0000  입니다. 128이죠

255는 1111 1111입니다.   

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>


int main()

{

    unsigned char flag = 16;

    unsigned char num1, num2;


    scanf_s("%hhu %hhu", &num1, &num2);

    flag |= num1 << 3;

    flag &= ~(num2 >> 2);

    flag ^=  255;


    printf("%u\n", flag);


    return 0;

}


제가 문제를 잘못 이해한 것 같아요. 분명 제가 생각하는 값은 나오는데 왜 답이 136이 나와야 하는지 모르겠습니다.

, 정 석현님이 작성
 

앗 감사합니다 ㅎㅎ

, 정 석현님이 작성
 

심사문제 입니다


위 아래 코드 모두

결과값은 맞는데

통과가 안됩니다

혹시 제가 잘못알고있는 부분에 대해서 알려주실 수 있으시다면 감사하겠습니다

문의한 코드는 삭제합니다.


(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 10월 12일, 월요일, 오후 11:56)

, 도장_ 관리자님이 작성
 

부분 완성형 문제이니 빈칸에 해당하는 코드만 제출하세요.

심사 결과는 통과입니다.


 
문의한 코드는 삭제합니다.

이렇게 해도 되지 않아 재질문드립니다.

(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 3월 11일, 수요일, 오후 2:03)