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


93

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

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


12
"단어"라는 용어는 모호하기 때문에 피하는 것이 가장 좋습니다. 아니면 ... 16 비트 워드, 32 비트 워드를 말하여 정밀하게
starblue

2
단어가 크거나 작게하는 것이 유리합니까?

2
@ quest4knoledge 더 큰 단어는 더 큰 포인터 (일명 더 많은 RAM)를 허용하고 더 큰 숫자를 빠르게 처리 할 수 ​​있도록합니다. 또한 더 큰 블록에서 작업함으로써 memset과 같은 일부 작업을 더 빠르게 할 수 있습니다. 그러나 더 큰 단어를 가진 프로세서는 프로세서에 더 많은 트랜지스터가 필요하며 약간 더 많은 에너지를 소비 할 수 있습니다.
VoidStar 2011 년

@VoidStar 및 더 큰 단어는 더 작은 주소 공간을 의미합니까, 아니면 혼란 스럽습니까?

1
"바이트를 갖는 것의 요점"이라는 질문에 답하기 위해 그것은 역사입니다. CPU는 "바이트"보다 큰 것을 처리 할 수있는 것으로 시작하지 않았습니다 (이전 프로세서는 니블 (4 비트) 만 처리했지만이 용어는 실제로 사용되지 않았습니다). 모든 메모의 첫 번째 CPU는 Intel 8086/8088이었습니다. 이것은 "바이트"를 중심으로 구축 된 명령어를 처리하도록 설계되었으며, 주소 지정 가능한 메모리의 기본 단위가 바이트이기 때문에 여전히 xBytes (예 : GigaBytes)로 메모리를 참조하는 이유이기도합니다. 'K는 KiloBytes에 대한 참조로, 첫 번째 PC에는 16 개, 64 개로 확장 가능-woo hoo!
Fred

답변:


169

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

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

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

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

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


9
훌륭한 대답입니다. 나는 " [그 단어는 프로세서가 한 번에 처리 할 수있는 가장 큰 비트입니다 ." 그것은 실제로입니다 가장 일반적인 비트의 덩어리 시간이 지남에 따라 진화 아키텍처의 제비가 넓은없는 단어 크기를 가지고 있지만, 그들은 종종 자신의 넓은 값으로 할 수있는 일에 제한됩니다.
Ross Patterson

11
추가 크레딧의 경우 "니블 (nibble)"은 1/2 바이트의 일반적인 용어입니다. 이는 초기 마이크로 컴퓨터 CPU 시대 ( 예 : Intel 8080)에 발생했으며, 그때까지는 바이트가 8 비트로 자리를 잡았 기 때문에 항상 4 비트로 이해되었습니다.
Ross Patterson

6
오늘날 8 비트 바이트가 표준입니다. IEC 80000-13 : 2008을 참조하십시오.
user2431763

1
@DebanjanDhar : 예, 그들은 관련이 없습니다. 유일한 관계는 페이지가 항상 (AFAIK) 단어 크기의 배수라는 것입니다.
DarkDust

4
x86 (평소처럼)은 일을 복잡하게 만듭니다. Intel 용어로 a word는 16 비트입니다. 기본 피연산자 크기가 32 비트 (dword)이고 정수 레지스터 너비가 64 비트 (qword) 인 최신 x86 CPU에서도 마찬가지입니다. 그리고 xmm 레지스터는 128 비트 너비입니다 ( movdqa이동 이중 쿼드). 메모리 버스는 폭이 64 비트 이상이고 (그리고 64 바이트 버스트로 전송 = 캐시 라인) 캐시 경로에 대한 실행 단위는 폭이 128 비트 이상이거나 256 비트 또는 512 비트 폭입니다. 최신 x86의 기본 머신 워드 크기가 무엇이든 16 비트는 아니지만 최신 x86은 여전히 ​​8086 용어를 사용합니다.
Peter Cordes 2018

16

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

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

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

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

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


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


나는 옥텟이 바이트의 프랑스어 번역이라고 생각했습니다. 감사합니다;)
Abdelouahab Pp

8

바이트

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

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

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

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

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

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

워드

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

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

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


6

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

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


6

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

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


그래서 어떤 의미에서 "바이트"라는 용어는 단지 편의상 사용 된 것입니까?

예, "바이트"는 용어가 발명되었을 때 특히 편리했습니다. 많은 관습과 마찬가지로 일단 설정되면 지속됩니다. 바이트 기반 용어가 더 이상 큰 그림에서 컴퓨터를 이해하기 쉽게 만드는지 확실하지 않지만 지배적 인 관습이며 곧 바뀌고 싶지 않습니다.
VoidStar

바이트는 텍스트에서 문자로 사용 된 단위에 사용되는 용어입니다. 역사적으로 크기가 6 ~ 9 비트 인 바이트가있었습니다.
starblue

@starblue 문자가 단어보다 적은 공간을 차지하는 것이 어떻게 가능합니까?

1
@ quest4knoledge : 메모리가 그 단어의 작은 덩어리에 저장되기 때문입니다. 단어는 32 비트 (또는 최신 컴퓨터에서는 64 비트)입니다. 개별 문자를 1x1로 처리하는 알고리즘에서는 CPU 내부에서만 전체 단어를 사용하고 RAM에 다시 배치하면 더 단단히 압축됩니다.
VoidStar 2011 년

5

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

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

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


5

모든 답변은 높은 수준의 언어와 주로 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")

3
아니요, 이러한 크기는 16 비트 컴퓨터에서만 유효합니다. 16 비트 시절의 레거시이고 MS가이 문제를 수정하지 않았기 때문에 이러한 매크로를 여전히 사용하는 Windows 프로그래밍에 익숙 할 것입니다.
DarkDust

2
단어 (정말 심지어 바이트)의 크기가 달라질 수 있기 때문에 BTW, ISO-C는 가지고 int<X>_tuint<X>_t특정 비트 크기의 변수 / 매개 변수를 원하는 경우에 사용한다 유형 (플러스 이상).
DarkDust

@DarkDust 우리는 여기서 어셈블리 언어에 대해 이야기하고 있습니다. C 표준은 관련이 없습니다. BTW, 나는 1980에서 프로그래밍 어셈블리이고 같은 이름이 사용되었습니다. (물론, 어쩌면 QWORD 제외)
johnfound

그러나 예외를 발견했습니다. GNU에서는 .word32 비트 일 수 있습니다 (예 : Sparc ).
DarkDust

죄송합니다. AS는 어셈블러가 아닙니다. 그것은 HLL 컴파일러의 백엔드가되는 유일한 목표로 만들어진 추악하고, 절름발이이며, 비참하고, 돌연변이입니다.
johnfound

3

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

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

그 외에도 "8 비트"에 대해 바이트 (또는 옥텟 1 ) 를 사용하는 몇 가지 이유가 있습니다 .

  1. 더 큰 단위는 매우 크거나 아주 작은 숫자를 피하는 데 편리합니다. "0.000000003 초라고 말할 수 있는데 왜 3 나노초라고 말해야합니까?"또는 "1,000 그램이라고 말할 수 있는데 왜 1kg이라고 말합니까"등과 같은 질문을하는 것이 좋습니다.
  2. 편의성 외에도 많은 작업이 일반적으로 바이트 수준이 아니라 바이트 수준 (메모리 주소 지정, 동적 저장소 할당, 파일 또는 소켓에서 읽기 등)에서 작동하기 때문에 바이트 단위는 1 비트 만큼 기본적입니다 .
  3. 단위 유형으로 "8 비트"를 채택하여 "2 바이트"대신 "8 비트 2 개"라고 말할 수 있더라도 새 단위가 숫자로 시작하는 것은 매우 혼란 스러울 것입니다. 예를 들어 누군가 "100 개의 8 비트"라고 말하면 100 비트가 아닌 108 비트로 쉽게 해석 될 수 있습니다.

1 이 답변에 대해 바이트를 8 비트로 간주하지만 이것은 보편적으로 사실이 아닙니다. 구형 컴퓨터에서는 바이트 크기가 다를 수 있습니다 (예 : 6 비트 . 옥텟 은 컴퓨터에 관계없이 항상 8 비트를 의미합니다 . 따라서이 용어는 네트워크 프로토콜을 정의하는 데 자주 사용됩니다.) 현대 사용에서 바이트는 8 비트와 동의어로 압도적으로 사용됩니다.


2

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


비정상적 예 (알고 있습니다. 예 : The texas Instruments c54x Google texas Instruments c54x byte. ti.com/lit/ug/spru393/spru393.pdf " 'C55x 명령어는 크기가 8 비트에서 48 비트. " stackoverflow.com/questions/2098149/…
barlop

1
그것은 전혀 거기에서 오지 않습니다. 이 용어는 실제로 1950 년대 후반 IBM의 W. Buchholtz에 의해 만들어졌습니다. 출처 : bobbemer.com/BYTE.HTM . Bob Bemer에 따르면 오타로 인한 혼동 ( "bit"사용)을 피하기 위해 "bite"보다 철자 "byte"가 선택되었습니다. 그는 알 것입니다. 그는 거기 있었어!
Stephen C

(단 30 년입니까? 당신은 단순한 채찍질하는 사람입니다. 자연스러운 "바이트"크기가 8 비트가 아닌 시스템에서 프로그래밍하는 법을 배웠습니다. :-))
Stephen C

1

참조 : https://www.os-book.com/OS9/slide-dir/PPT-dir/ch1.ppt

컴퓨터 저장 장치의 기본 단위는 비트입니다. 비트는 0과 1의 두 값 중 하나를 포함 할 수 있습니다. 컴퓨터의 다른 모든 저장소는 비트 모음을 기반으로합니다. 충분한 비트가 주어지면 컴퓨터가 숫자, 문자, 이미지, 영화, 사운드, 문서 및 프로그램 등을 표현할 수있는 것은 놀랍습니다. 바이트는 8 비트이며 대부분의 컴퓨터에서 가장 작은 편리한 저장소 청크입니다. 예를 들어, 대부분의 컴퓨터에는 비트 이동 명령이 없지만 바이트 이동 명령이 있습니다. 덜 일반적인 용어는 주어진 컴퓨터 아키텍처의 기본 데이터 단위 인 단어입니다. 단어는 하나 이상의 바이트로 구성됩니다. 예를 들어 64 비트 레지스터와 64 비트 메모리 주소가있는 컴퓨터에는 일반적으로 64 비트 (8 바이트) 단어가 있습니다. 컴퓨터는 한 번에 한 바이트가 아닌 기본 단어 크기로 많은 작업을 실행합니다. 컴퓨터 저장, 대부분의 컴퓨터 처리량과 함께 일반적으로 바이트 및 바이트 모음 단위로 측정 및 조작됩니다. 1 킬로바이트 (KB)는 메가 바이트 당 1,024 바이트 또는 MB는 1,024 기가 바이트 당 2 바이트 (GB)는 1,024 테라 바이트 당 3 바이트 (TB)는 1,024 페타 바이트 당 4 바이트 (PB)는 1,024 5 바이트 컴퓨터 제조업체는 종종이 숫자를 반올림하고 메가 바이트는 100 만 바이트이고 기가 바이트는 10 억 바이트라고 말합니다. 네트워킹 측정은이 일반 규칙의 예외입니다. 비트 단위로 제공됩니다 (네트워크가 한 번에 조금씩 데이터를 이동하기 때문). 024 5 바이트 컴퓨터 제조업체는 종종이 숫자를 반올림하여 메가 바이트가 1 백만 바이트이고 1 기가 바이트가 10 억 바이트라고 말합니다. 네트워킹 측정은이 일반 규칙의 예외입니다. 비트 단위로 제공됩니다 (네트워크가 한 번에 조금씩 데이터를 이동하기 때문). 024 5 바이트 컴퓨터 제조업체는 종종이 숫자를 반올림하여 메가 바이트가 1 백만 바이트이고 1 기가 바이트가 10 억 바이트라고 말합니다. 네트워킹 측정은이 일반 규칙의 예외입니다. 비트 단위로 제공됩니다 (네트워크가 한 번에 조금씩 데이터를 이동하기 때문).


-1

기계가 바이트 주소 지정이 가능하고 단어가 메모리에서 주소 지정 될 수있는 가장 작은 단위라면 단어는 바이트가 될 것입니다!


네. TMS320C54xx (Texas Instruments의 DSP 중 하나)에서 주소 지정이 가능한 최소 메모리 단위는 16 비트 길이이며 범용 레지스터 중 가장 작은 크기이기도합니다. 그리고 TI C 컴파일러는 char = short = int = 16 비트를 정의합니다.
Alexey Frunze 2011 년

아니요, 대부분의 RISC 시스템에는 32 비트 단어가 있지만 단일 바이트 주소를 지정할 수 있습니다 . 예를 들어 MIPS에서 word 분명히 32 비트를 의미하지만 lb8 비트를로드 하는 (로드 바이트) 명령어가 있습니다.
Peter Cordes 2018

-1

8 비트 그룹을 바이트 라고합니다. (특정 아키텍처의 경우는 예외 :)

단어 프로세서의 명령어 집합 및 / 또는 하드웨어 유닛으로서 처리되는 비트의 고정 크기의 그룹이다. 즉, 범용 레지스터 (일반적으로 1 바이트 이상)의 크기는 단어입니다.

는 C에서, 단어가되어 가장 자주 > = 정수라고int


7
8 비트 그룹을 옥텟이라고합니다.
cnicutar

2
정확함 : 용어 octet는 용어 byte와 관련된 모호성 때문에 8 비트 시퀀스를 명시 적으로 나타내도록 정의되었습니다 . 의 소리와 같은 I 그러나 byte더 나은 :)
tolitius

2
@tolitius : +1 for "하지만 나는 byte더 나은 소리를 좋아합니다": 나는 당신이 이것에 혼자가 아니며 몇몇 틈새 시스템에 대해 안전하다고 강력히 의심합니다. 바이트의 "혼란"은 아마도 8 비트가 아닌 크기 일 수 있습니다. 요즘 더 이상 관련이 없습니다.
Joachim Sauer 2011 년

-1

BYTE 및 WORD의 용어는 참조되는 프로세서의 크기와 관련이 있습니다. 가장 일반적인 프로세서는 8 비트, 16 비트, 32 비트 또는 64 비트였습니다. 프로세서의 WORD 길이입니다. 숫자 길이에 관계없이 실제로 WORD의 절반은 BYTE입니다. 이를 위해 BYTE의 절반이 NIBBLE입니다.


아니요, 32 비트 워드 및 8 비트 바이트 (예 : MIPS 또는 ARM)가있는 CPU에서 하프 워드는 2 바이트입니다.
Peter Cordes 2018

-3

사실, 일반적으로 단어는 16 비트와 동의어가되었으며, 이는 바이트가 8 비트와 비슷합니다. 32 비트 CPU의 "워드 크기"가 32 비트이기 때문에 약간 혼란 스러울 수 있지만, 데이터 단어에 대해 이야기 할 때 하나는 16 비트를 의미합니다. 32 비트 워드 크기를 가진 마이크로 컨트롤러는 명령어를 "longs"(단어 / 더블 워드 혼동을 피하기 위해 시도하고 방지하기 위해)라고 부릅니다.


1
이는 전적으로 CPU 유형에 따라 다릅니다. 지적했듯이 32 비트 비 IA32 시스템에서 "단어"는 일반적으로 32 비트입니다.
Ross Patterson

2
@RossPatterson 그것은 당신이 소프트웨어를 개발하는지 저녁을 먹는지에 전적으로 달려 있습니다.
엔지니어

ARM / MIPS / 기타 주류 RISC 아키텍처에는 32 비트 단어가 있습니다. 레지스터 너비 (해당 ISA의 32 비트 버전에서)와 명령어 너비입니다. 16 비트는 하프 워드이므로 ARM 명령어는ldrh 16 비트를로드하고이를 32 비트 레지스터로 0 확장합니다. 또는 ldrsh16 비트를로드하고 부호 확장합니다.
Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.