Bits and Bytes
What is a bit
Bit is one binary digit which is the smallest unit of information on a machine.
0 or 1 is one bit.
Distinct Values
Number of distinct values that can be represented by a n-bit is calculated by 2^(n-bit)
0 bit does not exist, but represents distinct value `0` (2^0 = 1)
1 bit | 2^1 = 2 | 2 distinct values (0, 1)
2 bit | 2^2 = 4 | 4 distinct values (00, 01, 10, 11)
4 bit | 2^4 = 16 | 16 distinct values
8 bit | 2^8 = 256 | 256 distinct values (1 byte)
16 bit | 2^16 = 65,536 | 65,536 distinct values (2 bytes)
Max Value
Max value a bit can represent is 2^n-1 because n=1 bit is reserved for 0 representation
What is n-bit
When we see common terms 8-bit, 16-bit, 32-bit and 64-bit all refer to a processor's word size
word is a native size of information processor can place into a register and process without special instructions
- also refers to the size of the memory address space
The word size of any chip is the most defining aspect of it's design
What is a word size
Word size refers to the amount of data a CPU's internal data registers can hold and process at one time
- size of the internal functional units in the CPU itself
The difference in word size has a dramatic impact on the capabilities and performance of a given chip
- Once you get up to 32-bits, the differences mainly become those of refinement (unless you are running a really big application, like genetic analysis or counting all the stars in the galaxy big)
What is Bit-Depth
Bit-depth is determined by the number of bits used to define each pixel
- The greater the bit depth, the greater the number of tones (grayscaleorcolor) that can be represented on the screen
Common bit Sizes
4-bit = 1-nibble (one hexadecimal)
Can represent 16 (2^4) different values.
Decimal representation from 0 to 15.
- 16-1since "distinct values" includes- 0.
Written in binary as 0000 (0) to 1111 (15)
- decimal value: 15
Represents one Hexadecimal character
8-bit (1-byte)
Can represent 256 (2^8) distinct values
Decimal representation from 0 to 255
- 256-1since "distinct values" includes- 0
Written in binary as 0000 0000 (0) to 1111 1111 (decimal value: 255)
- 128 (2^7) + 64 (2^6) + 32 (2^5) + 16 (2^4) + 8 (2^3) + 4 (2^2) + 2 (2^1) + 1 (2^0) =256
- those are 8 bitsorbinary digits
16-bit (2-bytes)
Can represent 65,536 distinct values.
Can represent decimal value from 0 to 65,535
- 2^16 - 1=- 65,536 - 1=- 65,535
32-bit (4-bytes)
Can represent decimal value from 0 to 4,294,967,295
- 2^32 - 1=- 4,294,967,296 - 1=- 4,294,967,295
64-bit (8 bytes)
Signed 64-bit
Max size: 19-digit number
Bit of highest significance is reserved for the sign
- If this bit is 1, the number isnegative
Because the last digit can represent 0 and first digit always represents signedness, it is possible to have both -0 and +0 in decimal representation
- In ordinary arithmetic, this doesn't matter. But some particular operations could have different behaviors.
Which means the decimal representation can go as low as -2^63 and as high as 2^63 - 1:
- -9,223,372,036,854,775,807- (signreserved forfirst digit)
 
- (
- 9,223,372,036,854,775,807- (1reserved forlast digit)
 
- (
Unsigned 64-bit
Max size: 20-digit number
- can go as low as 0and as high as2^64 - 1.
- unsigned integers cannot present negative values
- technicality it is possible to represent the numeric aspect of a quantity with uint64and represent it's positive/negative quality in a separatebool
 
- technicality it is possible to represent the numeric aspect of a quantity with 
Number from 0 to 18,446,744,073,709,551,615
Why subtract the one -1
Since the computer has to store the number 0 in an unsigned int, it is actually starting to count with 0, then 1 and so on
- That means that the n-thnumber for the computer is, in fact,n-1
byte
Unit of digital information consisting of 8 bits.
Why byte instead of bits?
Hardware-level memory is naturally organized into addressable chunks
- Small chunks means that you can have fine grained things like 4 bit numbers
- Large chunks allow for more efficient operation (typically a CPU moves things around in chunks or multiple chunks)
Large Bytes
kilobyte (Kb), megabyte (Mb), gigabyte (Gb), and terabyte (Tb) are calculated two to the power of n * 10
Kilobyte = 2^10 = 1,024 bytes
Megabyte = 2^20 = 1,048,576 bytes
Gigabyte = 2^30 = 1,073,741,824 bytes
Terabyte = 2^40 = 1,099,511,627,776 bytes