Programing

단어와 바이트의 차이점은 무엇입니까?

lottogame 2020. 9. 13. 11:34
반응형

단어와 바이트의 차이점은 무엇입니까?


나는 약간의 조사를했다. 바이트는 8 비트이고 워드는 메모리에서 주소를 지정할 수있는 가장 작은 단위입니다. 단어의 정확한 길이는 다양합니다. 내가 이해하지 못하는 것은 바이트를 갖는 요점이 무엇입니까? 왜 8 비트라고 말하지 않습니까?

나는 교수에게이 질문을했고 그는 요즘 대부분의 기계가 바이트 주소 지정이 가능하다고 말했습니다.하지만 그게 무슨 말을할까요?


바이트 : 오늘날 바이트는 거의 항상 8 비트입니다. 그러나 항상 그런 것은 아니며 "표준"이나이를 지시하는 어떤 것도 없습니다. 8 비트는 작업하기에 편리한 숫자이기 때문에 사실상 표준이되었습니다.

Word : 프로세서가 데이터를 처리하는 데 사용되는 기본 크기 (레지스터 크기). 오늘날 만나는 가장 일반적인 단어 크기는 8, 16, 32 및 64 비트이지만 다른 크기도 가능합니다. 예를 들어 36 비트 머신 이 몇 대 있었 거나 12 비트 머신이 있었습니다.

바이트 는 CPU에 대한 가장 작은 단위이다. 단일 비트를 설정 / 삭제하려면 먼저 메모리에서 해당 바이트를 가져 와서 비트를 엉망으로 만든 다음 바이트를 다시 메모리에 써야합니다.

단어 대조적으로이 프로세서는 한번에 (덧셈과 뺄셈 등)을 처리 할 수있는 비트의 큰 덩어리이다. 일부 프로세서는 다른 작업 (예 : 정수 대 부동 소수점 처리)에 대해 다른 단어 크기를 가질 수 있으므로이 정의는 약간 모호합니다. 단어 크기는 대부분 의 작업에서 작동하는 것입니다.

포인터 크기 가 다른 몇 가지 프로세서도 있습니다 . 예를 들어 8086은 16 비트 프로세서로 레지스터가 16 비트 너비임을 의미합니다. 그러나 포인터 (주소)는 20 비트 폭이며 특정 방식으로 두 개의 16 비트 레지스터를 결합하여 계산되었습니다.


내가 이해하지 못하는 것은 바이트를 갖는 요점이 무엇입니까? 왜 8 비트라고 말하지 않습니까?

바이트가 반드시 8 비트가 아니라는 기술적 인 점을 제외하고, 용어를 갖는 이유는 단순한 인간의 본성 때문입니다.

  • 노력의 경제 (일명 게으름)- "8 비트"보다 "바이트"라고 말하는 것이 더 쉽습니다.

  • 부족주의-사람들의 그룹은 다른 사람들과 구별하기 위해 전문 용어 / 사적인 언어를 사용하는 것을 좋아합니다.

그냥 분위기를 타. 50 년 이상 축적 된 IT 용어와 문화적 짐을 불평으로 바꾸지는 않을 것입니다.


FWIW- "하드웨어 아키텍처와 무관 한 8 비트"를 의미 할 때 사용하는 올바른 용어는 "옥텟"입니다.


바이트

이 질문에 C ++ 관점에서 대답하려고합니다.

C ++ 표준은 '바이트'를 "실행 환경의 기본 문자 집합의 모든 구성원을 보유하기에 충분히 큰 주소 지정 가능한 데이터 단위"로 정의합니다.

이것이 의미하는 바는 바이트가 구현을위한 기본 문자 집합을 수용 할 수있는 최소한의 인접 비트로 구성된다는 것입니다. 즉, 가능한 값의 수는 고유 문자 수보다 크거나 같아야합니다. 미국에서 기본 문자 세트는 일반적으로 ASCII 및 EBCDIC 세트이며 각 세트는 8 비트로 수용 할 수 있습니다. 따라서 바이트는 최소 8 비트를 가질 것입니다.

즉, 바이트는 단일 문자를 저장하는 데 필요한 메모리 양입니다.

C ++ 구현에서 '비트 수'를 확인하려면 'limits.h'파일을 확인하십시오. 아래와 같은 항목이 있어야합니다.

#define CHAR_BIT      8         /* number of bits in a char */

워드

워드는 기계 / 시스템에 의해 함께 (즉, 한 번의 시도로) 처리 될 수있는 특정 비트 수로 정의됩니다. 또는 Word가 단일 작업으로 CPU와 RAM간에 전송할 수있는 데이터 양을 정의한다고 말할 수 있습니다.

컴퓨터 기계의 하드웨어 레지스터는 워드 크기입니다. 또한 워드 크기는 가능한 가장 큰 메모리 주소를 정의합니다 (각 메모리 주소는 바이트 크기 메모리를 가리킴).

주 – C ++ 프로그램에서 메모리 주소는 단어가 아닌 메모리 바이트를 가리 킵니다.


왜 8 비트라고 말하지 않습니까?

모든 컴퓨터에 8 비트 바이트가있는 것은 아니기 때문입니다. 이 태그 때문에 C, 조회 CHAR_BITlimits.h.


워드는 프로세서의 레지스터 크기입니다. 즉, add, mul 등과 같은 프로세서 명령이 단어 크기의 입력에 있습니다.

그러나 대부분의 최신 아키텍처에는 8 비트 청크로 주소를 지정할 수있는 메모리가 있으므로 "바이트"라는 단어를 사용하는 것이 편리합니다.


이 맥락에서 단어는 기계가 메모리로 작업 할 때 사용하는 단위입니다. 예를 들어, 32 비트 머신에서 단어는 32 비트 길이이고 64 비트에서는 64 비트 길이입니다. 단어 크기는 주소 공간을 결정합니다.

프로그래밍 (C / C ++)에서 단어는 일반적으로 int_ptr포인터와 길이가 같은 유형 으로 표시되며 이러한 세부 정보를 추상화합니다.

Win32 API와 같은 일부 API는 WORD(16 비트) 및 DWORD(32 비트) 같은 유형이 있기 때문에 혼동을 줄 수 있습니다 . 그 이유는 API가 처음에는 16 비트 머신을 대상으로하고 그 다음 32 비트 머신으로 포팅 된 다음 64 비트 머신으로 이식 되었기 때문입니다. 포인터를 저장하려면 INT_PTR. 여기여기에 자세한 내용이 있습니다 .


모든 답변은 높은 수준의 언어와 주로 C / C ++를 가정 한 것 같습니다.

그러나 질문은 "어셈블리"태그가 붙어 있으며 내가 아는 모든 어셈블러 (8 비트, 16 비트, 32 비트 및 64 비트 CPU)에서 정의가 훨씬 더 명확합니다.

byte  = 8 bits 
word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple word")

데이터 시트 및 컴파일러에있는 용어가 무엇이든 '바이트'는 8 비트입니다. 특히 'Byte'라는 단어가 "By Eight"라는 표현에서 비롯 되었기 때문에 질문자와 일반성을 좀 더 모호한 예외와 혼동하지 마십시오. 저는 반도체 / 전자 산업에서 30 년 넘게 일해 왔으며 8 비트 이상을 표현하는 데 사용되는 '바이트'로 한 번도 알려지지 않았습니다.


단어의 정확한 길이는 다양합니다. 내가 이해하지 못하는 것은 바이트를 갖는 요점이 무엇입니까? 왜 8 비트라고 말하지 않습니까?

단어의 길이는 다양하지만 모든 최신 컴퓨터와 내가 익숙한 모든 이전 아키텍처에서도 단어 크기는 여전히 바이트 크기의 배수입니다. 따라서 가변 워드 크기와 관련하여 "8 비트"보다 "바이트"를 사용하는 데 특별한 단점이 없습니다.

Beyond that, here are some reasons to use byte (or octet1) over "8 bits":

  1. Larger units are just convenient to avoid very large or very small numbers: you might as well ask "why say 3 nanoseconds when you could say 0.000000003 seconds" or "why say 1 kilogram when you could say 1,000 grams", etc.
  2. Beyond the convenience, the unit of a byte is somehow as fundamental as 1 bit since many operations typically work not at the byte level, but at the byte level: addressing memory, allocating dynamic storage, reading from a file or socket, etc.
  3. Even if you were to adopt "8 bit" as a type of unit, so you could say "two 8-bits" instead of "two bytes", it would be often be very confusing to have your new unit start with a number. For example, if someone said "one-hundred 8-bits" it could easily be interpreted as 108 bits, rather than 100 bits.

1 Although I'll consider a byte to be 8 bits for this answer, this isn't universally true: on older machines a byte may have a different size (such as 6 bits. Octet always means 8 bits, regardless of the machine (so this term is often used in defining network protocols). In modern usage, byte is overwhelmingly used as synonymous with 8 bits.


If a machine is byte-addressable and a word is the smallest unit that can be addressed on memory then I guess a word would be a byte!


A group of 8 bits is called a byte ( with the exception where it is not :) for certain architectures )

A word is a fixed sized group of bits that are handled as a unit by the instruction set and/or hardware of the processor. That means the size of a general purpose register ( which is generally more than a byte ) is a word

In the C, a word is most often called an integer => int


The terms of BYTE and WORD are relative to the size of the processor that is being referred to. The most common processors are/were 8 bit, 16 bit, 32 bit or 64 bit. These are the WORD lengths of the processor. Actually half of a WORD is a BYTE, whatever the numerical length is. Ready for this, half of a BYTE is a NIBBLE.


In fact, in common usage, word has become synonymous with 16 bits, much like byte has with 8 bits. Can get a little confusing since the "word size" on a 32-bit CPU is 32-bits, but when talking about a word of data, one would mean 16-bits. Microcontrollers with a 32-bit word size have taken to calling their instructions "longs" (supposedly to try and avoid the word/doubleword confusion).

참고URL : https://stackoverflow.com/questions/7750140/whats-the-difference-between-a-word-and-byte

반응형