150 likes | 321 Views
CS 102. Numbering Systems. Overview. Computers do not use English. They do not use words Computers run on NUMBERS only Those numbers are in BINARY only. Overview. Computers have used a variety of numbering systems (over the years) More primitive to more complex Binary
E N D
CS 102 Numbering Systems
Overview Computers do not use English. They do not use words Computers run on NUMBERS only Those numbers are in BINARY only
Overview • 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
Sample Machine Code 0101010101000101010101010101010101010100101010101011010101010100100101010101010101010010101010101010100000101011111001010101010010100101010101101001010101010101001010101010010101010100010101010101010101010101010010101010101101010101010010010101010101010101001010101010101010000010101111100101010101001010010101010110100101010101010100101010101001010101010001010101010101010101010101001010101010110101010101001001010101010101010100101010101010101000001010111110010101010100101001010101011010010101010101010010101010101010101011010101010101010101010101010101010101011111101010101010101010101010100001010101010101010101010010101010101001010101010101010101010101010010101010100100000111010000
Sample Assembly Code assume cs:cseg,ds:cseg,ss:nothing,es:nothing jmp p150 ; start-up code jumpvaldd 0 ; address of prior interrupt signature dwwhozat ; program signature state db 0 ; '-' = off, all else = on wait dw 18 ; wait time - 1 second or 18 ticks hour dw 0 ; hour of the day atimedw 0ffffh ; minutes past midnite for alarm acountdw 0 ; alarm beep counter - number of seconds (5) atone db 5 ; alarm tone - may be from 1 to 255 - the ; higher the number, the lower the frequency alengdw 8080h ; alarm length (loop count) may be from 1-FFFF dhoursdw 0 ; display hours db ':' dminsdw 0 ; display minutes db ':' dsecsdw 0 ; display seconds db '-' ampm db 0 ; 'A' or 'P' for am or pm
One program • Look at the evolution of one simple program here
Higher Level Languages • 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.
Higher Level Languages • C: 1972. General purpose programming. #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } • Basic: 1964. Many versions since then. INPUT "What is your name: ", UserName$ PRINT "Hello "; UserName$ DO INPUT "How many stars do you want: ", NumStars Stars$ = STRING$(NumStars, "*") PRINT Stars$ DO INPUT "Do you want more stars? ", Answer$ LOOP UNTIL Answer$ <> "" Answer$ = LEFT$(Answer$, 1) LOOP WHILE UCASE$(Answer$) = "Y" PRINT "Goodbye "; UserName$
Higher Level Languages • 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
Numbering Systems • 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 • Hexadecimal
Decimal • Base 10 numbers • Numbering system we all grew up with • For example: • 1,050,423 • We all know how to manipulate these numbers • Addition, subtraction, multiplication, etc • Many ways to use these numbers. • Ex: Abacus • Other numbering systems are no different really • Just a different base than 10
Binary • What computers really use • Base 2 • Only symbols used are: 0, 1 • Each digit represents a power of 2 • Tutorial: http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary.html
Octal • 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
Hexadecimal • Base 16 • Digits are: 0123456789ABCDEF • Each digit is a power of 16 • 16^0 • 16^1 • 16^2 • Etc Click here for more information
Thanks to Tom Lehrer New Math (1964)