인프런 커뮤니티 질문&답변
산술 shift와 최상위 비트 관련
작성
·
369
0
산술 shift에서 최상위 비트는 그대로 유지가 된다고 알고 있는데
0x 1001 0100(-108)과 0x 0100 0100(68)에서 각각 left shift 1을 하면 0x 0010 1000(40)과, 0x 1000 1000(-120)으로 최상위비트가 변경이 되는데 왜 이러는 것인지 궁금합니다...
최상위 비트 유지는 right shift에 한해서만 되는 것인가요?
p.s. 사칙연산 강의 관련한 내용이지만
add [num], byte 1에서
resb로 이미 설정을 했음에도 resb는 데이터를 할당할 때 내린 명령이라 1에 byte를 붙여야 된다고 말씀하셨는데 resb로 설정된 것은 num인데 1과 resb 사이에 어떤 연관이 있는 것인지 궁금합니다
퀴즈
어셈블리 언어로 작성된 코드를 컴퓨터가 실행 가능한 기계 코드로 변환하는 역할을 하는 것은 무엇일까요?
컴파일러
인터프리터
어셈블러
링커
답변 1
0
Rookiss
지식공유자
1)
네 그렇습니다. << 의 경우 어차피 최상위 비트의 다음 비트가
왼쪽으로 이동해 덮어쓰겠죠.
2)
1과 resb에 딱히 관계가 있다기 보단,
어떤 숫자를 1바이트짜리 바구니에 넣을 때
그 숫자를 1바이트 짜리 숫자로 인식해야 하기 때문입니다.
이런 사소한 부분은 꼼꼼히 신경쓸 필요도 없고
어셈은 거시적인 관점에서만 알면 되기 때문에 그냥 넘어가시기 바랍니다.




