Bits, Data Types, and Operations
Bits, Data Types, and Operations
Bits, Data Types, and Operations
2-2
Computer is a binary digital system.
Digital system: Binary (base two) system:
• finite number of symbols • has two states: 0 and 1
Data type:
• representation and operations within the computer
We’ll start with numbers…
2-4
Unsigned Integers
Non-positional notation
• could represent a number (“5”) with a string of ones (“11111”)
• problems?
most least
329 significant
101 significant
2-5
Unsigned Integers (cont.)
An n-bit unsigned integer represents 2n values:
from 0 to 2n-1.
22 21 20
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
2-6
Unsigned Binary Arithmetic
Base-2 addition – just like base-10!
• add from right to left, propagating carry
carry
10111
+ 111
2-8
Two’s Complement
Problems with sign-magnitude and 1’s complement
• two representations of zero (+0 and –0)
• arithmetic circuits are complex
How to add two sign-magnitude numbers?
– e.g., try 2 + (-3)
How to add to one’s complement numbers?
– e.g., try 4 + (-3)
Two’s complement representation developed to make
circuits easy for arithmetic.
• for each positive number (X), assign value to its negative (-X),
such that X + (-X) = 0 with “normal” addition, ignoring carry out
2-10
Two’s Complement Shortcut
To take the two’s complement of a number:
• copy bits from right to left until (and including) the first “1”
• flip remaining bits to the left
011010000 011010000
100101111 (1’s comp) (flip) (copy)
+ 1
100110000 100110000
2-11
Two’s Complement Signed Integers
MS bit is sign bit – it has weight –2n-1.
Range of an n-bit number: -2n-1 through 2n-1 – 1.
• The most negative number (-2n-1) has no positive counterpart.
-23 22 21 20 -23 22 21 20
0 0 0 0 0 1 0 0 0 -8
0 0 0 1 1 1 0 0 1 -7
0 0 1 0 2 1 0 1 0 -6
0 0 1 1 3 1 0 1 1 -5
0 1 0 0 4 1 1 0 0 -4
0 1 0 1 5 1 1 0 1 -3
0 1 1 0 6 1 1 1 0 -2
0 1 1 1 7 1 1 1 1 -1
2-12
Converting Binary (2’s C) to Decimal
1. If leading bit is one, take two’s
complement to get a positive number.
2. Add powers of 2 that have “1” in the n 2n
0 1
corresponding bit positions. 1 2
3. If original number was negative, 2 4
add a minus sign. 3 8
4 16
5 32
X = 01101000two 6 64
7 128
= 26+25+23 = 64+32+8 8 256
= 104ten 9 512
10 1024
2-13
More Examples
X = 00100111two
= 25+22+21+20 = 32+4+2+1 n 2n
0 1
= 39ten 1 2
2 4
X = 11100110two 3 8
4 16
-X = 00011010 5 32
= 24+23+21 = 16+8+2 6 64
7 128
= 26ten 8 256
9 512
X = -26ten 10 1024
2-14
Converting Decimal to Binary (2’s C)
First Method: Division
1. Find magnitude of decimal number. (Always positive.)
2. Divide by two – remainder is least significant bit.
3. Keep dividing by two until answer is zero,
writing remainders from right to left.
4. Append a zero as the MS bit;
if original number was negative, take two’s complement.
2-17
Addition
As we’ve discussed, 2’s comp. addition is just
binary addition.
• assume all integers have the same number of bits
• ignore carry out
• for now, assume that sum fits in n-bit 2’s comp. representation
2-18
Subtraction
Negate subtrahend (2nd no.) and add.
• assume all integers have the same number of bits
• ignore carry out
• for now, assume that difference fits in n-bit 2’s comp.
representation
2-19
Sign Extension
To add two numbers, we must represent them
with the same number of bits.
If we just pad with zeroes on the left:
4-bit 8-bit
0100 (4) 00000100 (still 4)
1100 (-4) 00001100 (12, not -4)
2-20
Overflow
If operands are too big, then sum cannot be represented
as an n-bit 2’s comp number.
2-21
Logical Operations
Operations on logical TRUE or FALSE
• two states -- takes one bit to represent: TRUE=1, FALSE=0
A B A AND B A B A OR B A NOT A
0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
OR
• useful for setting bits
11000101
OR with zero = no change OR 00001111
OR with one = 1 11001111
NOT
• unary operation -- one argument
NOT 11000101
• flips every bit 00111010
2-23
Hexadecimal Notation
It is often convenient to write binary (base-2) numbers
as hexadecimal (base-16) numbers instead.
• fewer digits -- four bits per hex digit
• less error prone -- easy to corrupt long string of 1’s and 0’s
2-24
Converting from Binary to Hexadecimal
Every four bits is a hex digit.
• start grouping from right-hand side
011101010001111010011010111
3 A 8 F 4 D 7
2-25
Fractions: Fixed-Point
How can we represent fractions?
• Use a “binary point” to separate positive
from negative powers of two -- just like “decimal point.”
• 2’s comp addition and subtraction still work.
if binary points are aligned
2-1 = 0.5
2-2 = 0.25
2-3 = 0.125
00101000.101 (40.625)
+ 11111110.110 (-1.25)
00100111.011 (39.375)
No new operations -- same as integer arithmetic.
2-26
Very Large and Very Small: Floating-Point
Large values: 6.023 x 1023 -- requires 79 bits
Small values: 6.626 x 10-34 -- requires >110 bits
S Exponent Fraction
2-28
Floating-Point Operations
Will regular 2’s complement arithmetic work for
Floating Point numbers?
(Hint: In decimal, how do we compute 3.07 x 1012 + 9.11 x 108?)
2-29
Text: ASCII Characters
ASCII: Maps 128 characters to 7-bit code.
• both printable and non-printable (ESC, DEL, …) characters
00 nul10 dle20 sp 30 0 40 @ 50 P 60 ` 70 p
01 soh11 dc121 ! 31 1 41 A 51 Q 61 a 71 q
02 stx12 dc222 " 32 2 42 B 52 R 62 b 72 r
03 etx13 dc323 # 33 3 43 C 53 S 63 c 73 s
04 eot14 dc424 $ 34 4 44 D 54 T 64 d 74 t
05 enq15 nak25 % 35 5 45 E 55 U 65 e 75 u
06 ack16 syn26 & 36 6 46 F 56 V 66 f 76 v
07 bel17 etb27 ' 37 7 47 G 57 W 67 g 77 w
08 bs 18 can28 ( 38 8 48 H 58 X 68 h 78 x
09 ht 19 em 29 ) 39 9 49 I 59 Y 69 i 79 y
0a nl 1a sub2a * 3a : 4a J 5a Z 6a j 7a z
0b vt 1b esc2b + 3b ; 4b K 5b [ 6b k 7b {
0c np 1c fs 2c , 3c < 4c L 5c \ 6c l 7c |
0d cr 1d gs 2d - 3d = 4d M 5d ] 6d m 7d }
0e so 1e rs 2e . 3e > 4e N 5e ^ 6e n 7e ~
0f si 1f us 2f / 3f ? 4f O 5f _ 6f o 7f del
2-30
Interesting Properties of ASCII Code
What is relationship between a decimal digit ('0', '1', …)
and its ASCII code?
2-32
LC-3 Data Types
Some data types are supported directly by the
instruction set architecture.
2-33