```Numbering Systems
Computers do not use English.
They do not use words
Computers run on NUMBERS only
Those numbers are in BINARY only


Computers have used a variety of numbering
systems (over the years)
More primitive to more complex
Binary
 Machine Code (Assembly)
 Programming Languages

 Use compilers to make machine code
 Great many of them!!
 Ex: Visual Basic .NET
010101010100010101010101010101010101010010101010101
1010101010100100101010101010101010010101010101010
1000001010111110010101010100101001010101011010010
1010101010100101010101001010101010001010101010101
0101010101010010101010101101010101010010010101010
1010101010010101010101010100000101011111001010101
0100101001010101011010010101010101010010101010100
1010101010001010101010101010101010101001010101010
1101010101010010010101010101010101001010101010101
0100000101011111001010101010010100101010101101001
0101010101010010101010101010101011010101010101010
1010101010101010101010111111010101010101010101010
1010000101010101010101010101001010101010100101010
1010101010101010101010010101010100100000111010000
assume cs:cseg,ds:cseg,ss:nothing,es:nothing
jmp p150
; start-up code
jumpval dd 0
signature dw whozat
state db 0
wait dw 18
hour dw 0
atimedw 0ffffh
acount
dw 0
atonedb 5
alengdw 8080h
dhours
dw 0
db ':'
dmins
dw 0
db ':'
dsecs dw 0
db '-'
ampm
db 0
; program signature
; '-' = off, all else = on
; wait time - 1 second or 18 ticks
; hour of the day
; minutes past midnite for alarm
; alarm beep counter - number of seconds (5)
; alarm tone - may be from 1 to 255 - the
; higher the number, the lower the frequency
; alarm length (loop count) may be from 1-FFFF
; display hours
; display minutes
; display seconds
; 'A' or 'P' for am or pm

Look at the evolution of one simple program
here

APL: 1957. A mathematical language.
(~R∊R∘.×R)/R←1↓⍳R

‘ Find primes 1-R
ALGOL: 1960. First second generation
language.
BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
BEGIN
WRITE (F, *, E);
END;
END.

C: 1972. General purpose programming.
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}

Basic: 1964. Many versions since then.
DO
INPUT "How many stars do you want: ", NumStars
Stars\$ = STRING\$(NumStars, "*")
PRINT Stars\$
DO
INPUT "Do you want more stars? ", Answer\$

VB.NET: 2003. Visual Programming with .NET
libraries.
Module Module1
Sub Main()
Console.WriteLine("Hello, world!")
End Sub
End Module



This is NOT the visual version of the program
(stay tuned for that!)
This is NOT the pinnacle of programming
It is, however, a very useful, very easy to learn
language




Before we can start to program, we need to
understand the basic numbering systems
From time to time they will be used in our code
Once upon a time, they were essential to
programming. Now they are merely useful
Several basic numbering systems:
Decimal
 Binary
 Octal




Base 10 numbers
Numbering system we all grew up with
For example:


We all know how to manipulate these numbers



Many ways to use these numbers.


1,050,423
Ex: Abacus
Other numbering systems are no different really
Just a different base than 10





What computers really use
Base 2
Only symbols used are: 0, 1
Each digit represents a power of 2
Tutorial:






Base 8 “Octa”
Not used much anymore
Used a LOT in early computing
Group three binary digits together
Each group forms numbers from 0-7
Used for one common task today: ASCII



Base 16
Digits are: 0123456789ABCDEF
Each digit is a power of 16




16^0
16^1
16^2
Etc
New Math (1964)
```