I was just wondering the reason why A BYTE IS 8 BITS ?
Specifically if we talk about ASCII character set, then all its symbols can be represented just 7 bits leaving one spare bit(in reality where 8 bits is 1 Byte).
So if we assume, that that there is big company wherein everyone has agreed to just use ASCII character set and nothing else(also this company doesn't have to do anything with the outside world) then couldn't in this company the developers develop softwares that would consider 7 Bits as 1 Byte and hence save one precious bit,
and if done so they could save for instance 10 bits space for every 10 bytes(here 1 byte is 7 bits again) and so, ultimately lots and lots of precious space.
The hardware(hard disk,processor,memory) used in this company specifically knows that it need to store & and bunch together 7 bits as 1 byte.
If this is done globally then couldn't this revolutionise the future of computers.
Can this system be developed in reality ?
Won't this be efficient ?

- 734
- 2
- 9
- 23
-
18 is a convenient power of 2 where as 7 is not. With a binary system 8 makes more sense. – sreisman Dec 25 '15 at 17:06
-
I agree on this point but can you illustrate practically how 8 makes more sense ? and also this company's hardware is made to work with 7 bits as a bunch. – Shivam Aggarwal Dec 25 '15 at 17:10
-
I think http://stackoverflow.com/questions/5516044/system-where-1-byte-8-bit?rq=1 would answer your question. – kgui Dec 25 '15 at 17:15
-
1@Crt Yes it did but I would really appreciate a clear explanation on this topic :) – Shivam Aggarwal Dec 25 '15 at 17:51
-
People used to use the 8th bit for other purposes. Then had to [clean up their code](https://en.wikipedia.org/wiki/8-bit_clean). – AProgrammer Dec 25 '15 at 20:05
-
BTW, what is that company doing which don't need ISO-8859-XX let alone unicode but has the ressources to get custom hardware so remote from the current standards? – AProgrammer Dec 25 '15 at 20:35
-
Well its just a assumption for better understanding. – Shivam Aggarwal Dec 26 '15 at 05:54
-
1So you're assuming all the digital information can be neatly organized as ascii text? Open any executable file (or any plain-text file) and explain what you see. – Leeor Dec 28 '15 at 15:19
-
sorry, *non-plain-text – Leeor Dec 29 '15 at 02:25
-
This post would have made so much more sense if it was a plea for 1-bit bytes rather than some random number lower than 8. With 1-bit bytes, not a single bit would be wasted, ever. – Mr Lister Dec 30 '15 at 08:23
-
when we used octal 9 bits made more sense as a byte and some systems used 9, and 36 bit words. Now hex is popular and 8 makes more sense with 32 bit words. – old_timer Jan 21 '16 at 18:37
2 Answers
A byte is not necessarily 8 bits. A byte a unit of digital information whose size is processor-dependent. Historically, the size of a byte is equal to the size of a character as specified by the character encoding supported by the processor. For example, a processor that supports Binary-Coded Decimal (BCD) characters defines a byte to be 4 bits. A processor that supports ASCII defines a byte to be 7 bits. The reason for using the character size to define the size of a byte is to make programming easier, considering that a byte has always (as far as I know) been used as the smallest addressable unit of data storage. If you think about it, you'll find that this is indeed very convenient.
A byte is defined to be 8 bits in the extremely successful IBM S/360 computer family, which used an 8-bit character encoding called EBCDI. IBM, through its S/360 computers, introduced several crucially important computing techniques that became the foundation of all future processors including the ones we using today. In fact, the term byte has been coined by Buchholz, a computer scientist at IBM.
When Intel introduced its first 8-bit processor (8008), a byte was defined to be 8 bits even though the instruction set didn't support directly any character encoding, thereby breaking the pattern. The processor, however, provided numerous instructions that operate on packed (4-bit) and unpacked (8-bit) BCD-encoded digits. In fact, the whole x86 instruction set design was conveniently designed based on 8-bit bytes. The fact that 7-bit ASCII characters fit in 8-bit bytes was a free, additional advantage. As usual, a byte is the smallest addressable unit of storage. I would like to mention here that in digital circuit design, its convenient to have the number of wires or pins to be powers of 2 so that every possible value that appear as input or output has a use.
Later processors continued to use 8-bit bytes because it makes it much easier to develop newer designs based on older ones. It also helps making newer processors compatible with older ones. Therefore, instead of changing the size of a byte, the register, data bus, address bus sizes were doubled every time (now we reached 64-bit). This doubling enabled us to use existing digital circuit designs easily, significantly reducing processor design costs.

- 22,259
- 3
- 54
- 95
-
Perfectly detailed Answer.. Thankyou so much for it.. Just one thing.. Can you please please give one more explanation regarding the relation between 64bit architecture and 1 byte(8 bits). It would be really helpful – Shivam Aggarwal Dec 28 '15 at 15:52
-
1@Brut3Forc3 A 64-bit instruction set architecture can do arithmetic on 64-bit data items using a single instruction. It also means that the size of a general purpose register is 64-bit. However, the size of the data bus or address bus may or may not be 64-bit (could be smaller or larger). A 64-bit architecture cannot perform arithmetic on data items larger than 64-bit using a single instruction. A byte is just 8 bits since Intel 8008 and is considered to be a standard (IEC 80000-13). – Hadi Brais Dec 28 '15 at 16:10
-
-
1@Brut3Forc3 It's the smallest addressable unit of storage. For example, if we have a 48-bit address bus, then every 48-bit value is the address of a unique byte. Therefore, the maximum amount of memory that the processor can access is 2^48 bytes. – Hadi Brais Dec 28 '15 at 16:41
-
How do 48 bit address bits point to just one unique byte. Won't we use those 48 address bits to address 48/8= 6, 6 unique bits. Why is it used to address just one byte. Kindly reply :) – Shivam Aggarwal Dec 29 '15 at 13:03
-
1@Brut3Forc3 The size of an address is 48 bits or 48/8 = 6 bytes. However, the size of the data item that is stored at that address is a single 8-bit byte. – Hadi Brais Dec 29 '15 at 13:55
-
The main reason why it's 8 bits and not 7 is that is needs to be a power of 2.
Also: imagine what nibbles would look like in 7-bit bytes..
Also ideal (and fast) for conversion to and from hexadecimal.
Update:
What advantage do we get if we have power of 2... Please explain
First, let's distinguish between a BYTE
and a ASCII character
. Those are 2 different things.
A byte is used to store and process digital information (numbers) in a optimized way, whereas a character is (or should be) only meant to interact with us, humans, because we find it hard to read binary (although in modern days of big-data, big-internetspeed and big-clouds, even servers start talking to each other in text (xml, json), but that's a whole different story..).
As for a byte being a power of 2, the short answer:
The advantage of having powers of 2, is that data can easily be aligned efficiently on byte- or integer-boundaries - for a single byte that would be 1, 2, 4 and 8 bits, and it gets better with higher powers of 2.
Compare that to a 7-bit ASCII (or 7-bit byte): 7 is a prime number, which means only 1-bit and 7-bit values could be stored in an aligned form.
Of course there are a lot more reasons one could think of (for example the lay-out and structure of the logic gates and multiplexers inside CPU's/MCU's).
Say you want to control the in- or output pins on a multiplexer: with 2 control-lines (bits) you can address 4 pins, with 3 inputs, 8 pins can be addressed, with 4 -> 16,.. - idem for address-lines. So the more you look at it, the more sense it makes to use powers of 2. It seems to be the most efficient model.
As for optimized 7-bit ASCII:
Even on a system with 8-bit bytes, 7-bit ASCII can easily be compacted with some bit-shifting. A Class
with a operator[]
could be created, without the need to have 7-bit bytes (and of course, a simple compression would even do better).

- 11,201
- 1
- 24
- 46
-
What advantage do we get if we have power of 2... Please explain – Shivam Aggarwal Dec 27 '15 at 04:03
-
-
@Brut3Forc3 - see update, the main reason being alignment (and 7 being a prime number for example). – Danny_ds Dec 28 '15 at 15:52