Visual C++에서 DWORD는 기계, 플랫폼 및 SDK에 따라 다르지만 부호없는 long입니다. 그러나 DWORD는 더블 워드 (2 * 16)이기 때문에 64 비트 아키텍처에서는 여전히 DWORD가 32 비트입니까?32 비트 및 64 비트 코드가있는 DWORD의 크기는 어느 정도입니까?
답변
실제로 32 비트 컴퓨터에서 단어는 32 비트이지만 DWORD 유형은 16 비트의 오래된 옛날부터 남은 것입니다.
프로그램을 최신 시스템으로 쉽게 이식 할 수 있도록 Microsoft는 모든 이전 유형이 크기를 변경하지 않을 것이라고 결정했습니다.
현재 공식 목록을 찾을 수 있습니다 _PTR로 끝나는 32 비트에서 64 비트로의 전환으로 변경 http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx
모든 플랫폼에 의존하는 유형 (DWORD_PTR는 32 비트에서 32 비트 될 것입니다 64 비트 Windows에서 64 비트).
실제 범위는 [여기] (https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)에 나와 있습니다. –
@LaurieStearn이 기사는 Microsoft 컴파일러가 'DWORD'와 같은 winapi 데이터 유형이 아니라 내부적으로 사용하는 데이터 유형에 관한 것입니다. – jrh
예, 답변의 링크 된 [공식 목록] (https://msdn.microsoft.com/en-us/library/aa383751(VS.85) .aspx)에있는 문서의 범위는 다음과 같습니다. 인용구 : ** DWORD : 32 비트 부호없는 정수 범위는 0에서 4294967295까지입니다. ** –
그것은 다음과 같이 정의된다 INT와
32 비트 플랫폼길고 동의어.
따라서 DWORD는 32 비트 운영 체제에서 32 비트입니다. 별도의 64 비트 DWORD 정의가 있습니다.
typdef unsigned _int64 DWORD64;
희망이 있습니다.
:) 현대 프로세서의 단어은 32 비트 또는 64 비트입니다. 단순히 메모리 포인터의 길이입니다 (ALU의 용량입니다).
그러나 역사적으로 x86 "단어"는 32 비트가 아니라 16 비트입니다. 따라서 역사적으로 x86을 대상으로하는 Microsoft 라이브러리는 DWORD를 부호없는 길이 즉 "컴퓨터 포인터 크기"로 정의합니다.
그게 전부입니다. 나중에 참조 할 경우 Wikipedia을 참조하십시오.
(1) 잘못된 위키 피 디아 페이지 링크입니다. (2) 질문은 컴퓨터 아키텍처 단어가 아니라 Microsoft의 'DWORD'유형에 관한 것입니다. –
http://en.wikipedia.org/wiki/Word_(computer_architecture) "예를 들어, Microsoft Windows API는 WORD의 프로그래밍 언어 정의를 32 비트 또는 64 비트 API에서 사용할 수 있음에도 불구하고 16 비트로 유지합니다 비트 프로세서는 표준 워드 크기가 각각 32 비트 또는 64 비트가 될 것이다. –
전화 A, dword32, dword64 ... 당신이 원하는대로,하지만 바이트 단어는 2 바이트 더블 워드 (더블 워드)이 개 단어 QWORD (쿼드 단어) 4입니다 8 비트 입니다 긴 32 비트 또는 64 비트 시스템의 단어
은 LONG 또는 INT 같은 별명은 다를 수 있지만, 여전히 DWORD
Microsoft는'WORD'를 2 바이트,'DWORD'를 4 바이트,'QWORD'를 8 바이트로 간주합니다. –
8 비트 바이트 인 더블 워드이다. 2 바이트는 단어입니다. 더블 워드 또는 DWORD는 4 바이트 또는 2 워드입니다.
한 단어의 길이는 프로세서에 따라 다릅니다. DWORD는 2 바이트 단어 16 비트 프로세서가 표준이 될 때 다시 명명되었습니다. Microsoft는 32 비트 이상의 프로세서로 옮겨 갈 때 길이를 변경하지 않기로 결정했습니다. – Ben
- 1. 어느 mysql 32/64 비트
- 2. 32 비트/64 비트 OS?
- 3. 32 비트 64 비트 호환
- 4. 32 비트 및 64 비트 ASP.NET 배포
- 5. 32 비트 및 64 비트 CPU/OS
- 6. 32 비트 서버 및 32/64 비트 클라이언트가있는 서브 버전
- 7. SharePoint 64 비트 또는 32 비트
- 8. 64 비트 대 32 비트 Windows 결정
- 9. 64 비트 어셈블리의 32 비트 명령어들
- 10. * .WAR (64 비트 x 32 비트) 생성
- 11. 32 비트 윈도우 아래의 64 비트 레지스터
- 12. 32 비트/64 비트 시스템에 관한 질문
- 13. Office의 32 비트 DLL 64 비트
- 14. 64 비트 Weblogic 서버의 32 비트 JDK
- 15. 64 비트 Solaris에서 32 비트 포인터로 컴파일
- 16. 32 비트 64 비트 참조 라이브러리
- 17. 64 비트 Windows 2008의 32 비트 cluster.exe
- 18. 32 비트 Windows XP 64 비트 VM
- 19. 32 비트 dll에서 64 비트 dll로 변환
- 20. SHGetFolderPath() 32 비트 대 64 비트
- 21. 포트란 : 32 비트/64 비트 성능 이식성
- 22. 32 비트 라이브러리를 64 비트 프로그램에 연결
- 23. 64 비트 OS/32 비트 프로세스
- 24. 64 비트 파이썬은 32 비트 Windows
- 25. 64 비트 컴퓨터에서 32 비트 DLL 사용
- 26. Xcode 및 64 비트 및 32 비트 질문
- 27. 32 대 64 비트 GC
- 28. 32 비트 및 64 비트 .NET machine.config를 수정하기 위해 32 비트 설치 프로그램을 시작하는 동안 64 비트 프로세스를 시작하십시오.
- 29. 최대 JVM 힙 크기 이해 - 32 비트 대 64 비트
- 30. 32 비트 및 64 비트 버전의 Microsoft.Sharepoint.dll 있습니까?
DWORD는 machine, platform 또는 SDK에 종속적이지 않습니다. –
이것은 질책이지만 기술적으로이 질문은 C 또는 C++에 적용됩니다. C++ 태그를 제거하거나 C 태그를 추가하는 것이 더 좋을지 모르지만 어느 것이 더 좋을지는 잘 모르겠습니다. – jrh