Presentation is loading. Please wait.

Presentation is loading. Please wait.

LING 388: Computers and Language

Similar presentations


Presentation on theme: "LING 388: Computers and Language"— Presentation transcript:

1 LING 388: Computers and Language
Lecture 3

2 Today's Topics Review Quick Homework 2 Quick Homework 3
Underneath Python Binary Numbers Character sets

3 Homework 2 review: Egghead
1952

4 Homework 2 review: Egghead
nerd or geek "While its true origins are a bit murky, it's widely agreed that "egghead" reached the height of its usage in 1952, when then-vice-presidential candidate Richard Nixon used it to describe the Democratic candidate for president, Adlai Stevenson -- whose balding head certainly conjured images of an egg. But his supporters were quickly labeled eggheads as well, and thus the term took on a political meaning. It came, eventually, to mean approximately what the word "elitist" means today." Adlai Stevenson (source: Wikipedia)

5 Python: Numbers import math math.pi

6 Python: Numbers Identities: one here one for your homework
Two decimal places: '{:.2f}'.format(i) Let's define a function for this identity

7 Quick Homework 3 Complex number library: i is j in Python:
cmath g/3.0/library/cmath.ht ml i is j in Python: >>> cmath.sqrt(-1) 1j Demonstrate Euler's identity in Python Due date Monday (midnight)

8 The underlying architecture
Python is a high-level language Beneath Python lies binary… interesting use of binary notation: 6 bit Leica camera lens encoding The 6-bit code shown on the right is (1 = black, 0 = white),  read starting from the philips screw head

9 Introduction Memory Representation binary: zeros and ones (1 bit)
array a[23] addressable Memory (RAM) Memory Representation binary: zeros and ones (1 bit) organized into bytes (8 bits) memory is byte-addressable word (32 bits) e.g. integer (64 bits: floating point number) big-endian/little-endian most significant byte first or least significant byte communication … your Intel and ARM CPUs FFFFFFFF

10 Increased address space and 64-bit registers
Introduction Increased address space and 64-bit registers A typical notebook computer Example: a 2013 Macbook Air CPU: Core i5-4250U 1.3 billion transistors built-in GPU TDP: 15W (1.3 GHz) Dual core (Turbo: 2.6 GHz) Hyper-Threaded (4 logical CPUs, 2 physical) 64 bit 64 KB (32 KB Instruction + 32 KB Data) L1 cache 256 KB L2 cache per core 12MB L3 cache shared 16GB max RAM A 4 core machine: 8 virtual anandtech.com

11 Introduction Machine Language
A CPU understands only one language: machine language all other languages must be translated into machine language Primitive instructions include: MOV PUSH POP ADD / SUB INC / DEC IMUL / IDIV AND / OR / XOR / NOT NEG SHL / SHR JMP CMP JE / JNE / JZ / JG / JGE / JL / JLE CALL / RET Assembly Language: (this notation) by definition, nothing built on it is more powerful

12 Introduction Not all the machine instructions are conceptually necessary many provided for speed/efficiency Theoretical Computer Science All mechanical computation can be carried out using a TURING MACHINE Finite state table + (infinite) tape Tape instructions: at the tape head: Erase, Write, Move (Left/Right/NoMove) Finite state table: Current state x Tape symbol --> new state x New Tape symbol x Move

13 Introduction Storage: based on digital logic
binary (base 2) – everything is a power of 2 Byte: 8 bits = = = 91 (in decimal) Hexadecimal (base 16) 0-9,A,B,C,D,E,F (need 4 bits) 5B (= 1 byte) = 5* = = 91 27 26 25 24 23 22 21 20 1 27 26 25 24 23 22 21 20 23 22 21 20 1 23 22 21 20 23 22 21 20 1 5 B 161 160 5 B 161 160

14 Introduction: data types
Integers In one byte (= 8 bits), what’s the largest and smallest number, we can represent? Answer: Why? – 1 = 0 = 127 = -128 = -1 27 26 25 24 23 22 21 20 1 27 26 25 24 23 22 21 20 27 26 25 24 23 22 21 20 28 – 1 = 255 27 26 25 24 23 22 21 20 1 27 26 25 24 23 22 21 20 27 – 1 = 127 27 26 25 24 23 22 21 20 1

15 Introduction: data types
Integers In one byte (= 8 bits), what’s the largest and smallest number, we can represent? = 0 = 127 = -128 = -1 127 -128 -127 -1 2’s complement representation

16 Introduction: data types
Integers In one byte, what’s the largest and smallest number, we can represent? Answer: using the 2’s complement representation Why? super-convenient for arithmetic operations “to convert a positive integer X to its negative counterpart, flip all the bits, and add 1” Example: = = 10 (decimal) = = -10 (decimal) flip + 1 = = Addition: = = 0 (ignore overflow)

17 Introduction: data types
Typically 32 bits (4 bytes) are used to store an integer range: -2,147,483,648 ( ) to 2,147,483,647 ( ) what if you want to store even larger numbers? Binary Coded Decimal (BCD) code each decimal digit separately, use a string (sequence) of decimal digits … 231 230 229 228 227 226 225 224 27 26 25 24 23 22 21 20 byte 3 byte 2 byte 1 byte 0 C: int

18 Introduction: data types
what if you want to store even larger numbers? Binary Coded Decimal (BCD) 1 byte can code two digits (0-9 requires 4 bits) 1 nibble (4 bits) codes the sign (+/-), e.g. hex C/D 23 22 21 20 2 1 4 2 bytes (= 4 nibbles) 23 22 21 20 1 1 + 2 1 4 2.5 bytes (= 5 nibbles) 23 22 21 20 1 9 credit (+) debit (-) 23 22 21 20 1 23 22 21 20 1 C D

19 Introduction: data types
Typically, 64 bits (8 bytes) are used to represent floating point numbers (double precision) c = x 108 (m/s) coefficient: 52 bits (implied 1, therefore treat as 53) exponent: 11 bits (not 2’s complement, unsigned with bias) sign: 1 bit (+/-) C: float double x86 CPUs have a built-in floating point coprocessor (x87) 80 bit long registers wikipedia

20 Introduction: data types
char How about letters, punctuation, etc.? ASCII American Standard Code for Information Interchange Based on English alphabet (upper and lower case) + space + digits + punctuation + control (Teletype Model 33) Question: how many bits do we need? 7 bits + 1 bit parity Remember everything is in binary … Teletype Model 33 ASR Teleprinter (Wikipedia)

21 Introduction: data types
order is important in sorting! 0-9: there’s a connection with BCD. Notice: code 30 (hex) through 39 (hex)

22 Introduction: data types
x86 assemby language: PF: even parity flag set by arithmetic ops. TEST: AND (don’t store result), sets PF JP: jump if PF set Example: MOV al,<char> TEST al, al JP <location if even> <go here if odd> Parity bit: transmission can be noisy parity bit can be added to ASCII code can spot single bit transmission errors even/odd parity: receiver understands each byte should be even/odd Example: 0 (zero) is ASCII 30 (hex) = even parity: , odd parity: Checking parity: Exclusive or (XOR): basic machine instruction A xor B true if either A or B true but not both (even parity 0) xor bit by bit 0 xor 1 = 1 xor 1 = 0 xor 0 = 0 xor 0 = 0 xor 0 = 0 xor 0 = 0 xor 0 = 0

23 Introduction: data types
UTF-8 standard in the post-ASCII world backwards compatible with ASCII (previously, different languages had multi-byte character sets that clashed) Universal Character Set (UCS) Transformation Format 8-bits (Wikipedia)

24 Introduction: data types
Example: あ Hiragana letter A: UTF-8: E38182 Byte 1: E = 1110, 3 = 0011 Byte 2: 8 = 1000, 1 = 0001 Byte 3: 8 = 1000, 2 = 0010 い Hiragana letter I: UTF-8: E38184 Shift-JIS (Hex): あ: 82A0 い: 82A2

25 Introduction: data types
How can you tell what encoding your file is using? Detecting UTF-8 Microsoft: 1st three bytes in the file is EF BB BF (not all software understands this; not everybody uses it) HTML: <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" > (not always present) Analyze the file: Find non-valid UTF-8 sequences: if found, not UTF-8… Interesting paper:

26 Introduction: data types
Text files: text files have lines: how do we mark the end of a line? End of line (EOL) control character(s): LF 0x0A (Mac/Linux), CR 0x0D (Old Macs), CR+LF 0x0D0A (Windows) End of file (EOF) control character: (EOT) 0x04 (aka Control-D) programming languages: NUL used to mark the end of a string binaryvision.nl


Download ppt "LING 388: Computers and Language"

Similar presentations


Ads by Google