2009-10-13 6 views
3

빅 엔디안 방식에 따라 32 비트 단어로 구성된 바이트 주소 지정 가능 메모리가있는 컴퓨터를 생각해보십시오. 프로그램은 키보드에서 입력 된 ASCII 문자를 읽고 위치 1000에서 시작하여 연속 바이트 위치에 저장합니다. "존슨"이름을 입력 한 후 위치 1000과 1004에 두 개의 메모리 단어 내용을 표시합니다.ASCII 문자는 어떻게 메모리에 저장됩니까?

+4

숙제 질문을 전사하는 동안, 당신 잘못 철자 ASCII – pavium

+0

뿐만 아니라 ASCII ... – Stephan202

+3

아니, 아니, 그 정보 교환 들여 쓰기에 대한 미국 표준 코드입니다 . 아시다시피 탭이나 공백과 같은 거룩한 전쟁과 싸우는 물건들 :-) – Joey

답변

3

각 문자를 편리한 ASCII table을 사용하여 16 진수로 변환하고 순차적으로 메모리에 추가하십시오. 이 화려한 ASCII 그래픽으로 쉽게 렌더링 :

+------+--+--+--+--+ 
|0x1000|6A|6F|68|6E| 
+------+--+--+--+--+ 

마지막 4 바이트가 탈락하고,이 후 모든 숙제입니다.

+0

당신의 멋진 ASCII 예술은 고통스럽게이 시간처럼 박스 값을 렌더링하는 J와 함께 시간을 보냈습니다. (http://www.jsoftware.com/ 도움말/사전/d010.htm). – Joey

+0

@Johannes : 참으로. 내 자신의 답변을 상기시켜줍니다. http://stackoverflow.com/questions/897366/how-do-pointer-to-pointers-work-in-c/897414#897414 – Stephan202

-2

내가 말은 다음 값을 가질 것보다 생각 :

1000: 0x6a6f686e 
1004: 0x736f6e00 

'이름의 원인은 7 문자를 포함, 여덟 개 문자는 임의의 값을 알 수없는, 그래서 마지막 위치 (00)이다.

+1

빅터 게임을하지 않습니다. -디 – pavium

0

단일 바이트 (예 : ASCII 문자)를 저장하는 엔디안이 없습니다. 엔디안은 값이 여러 바이트로 표시 될 때만 작동합니다. 예를 들어, 바이트 시퀀스를 저장하는 것은 리틀 및 빅 엔디안에서 동일하며 바이트 표현 만 다릅니다. 예를 들어 숫자 3 735 928 559 (또는 16 진법의 0xdeadbeef)를 가져 와서 메모리 위치 1000에 32 비트 워드 (예 : int)로 저장하면 다음과 같이 표시됩니다.

ADR : 1000 1001 1002 1004
드 광고 EF
LE 수 : BE를 EF 될 광고 드

관련 문제