1 / 103

Bits, Bytes, and Integers CENG331 - Computer Organization

Bits, Bytes, and Integers CENG331 - Computer Organization. Adapted from slides of the textbook: http://csapp.cs.cmu.edu/. Here is the car that we’ve been driving. Let have look under the hood!. Hello World!. What happens under the hood?. hello.c. #include < stdio.h > int main() {

Download Presentation

Bits, Bytes, and Integers CENG331 - Computer Organization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bits, Bytes, and IntegersCENG331 - Computer Organization Adapted from slides of the textbook: http://csapp.cs.cmu.edu/

  2. Here is the car that we’ve been driving..

  3. Let have look under the hood!

  4. Hello World! • What happens under the hood?

  5. hello.c #include <stdio.h> int main() { printf(“Hello World”); }

  6. Compilation of hello.c printf.o Pre- processor (cpp)‏ Compiler (cc1)‏ Assembler (as)‏ Linker (ld)‏ hello.c hello.i hello.s hello.o hello Source program (text)‏ Assembly program (text)‏ Modified source program (text)‏ Relocatable object programs (binary)‏ Executable object program (binary)‏

  7. Preprocessing Pre- processor (cpp)‏ hello.c hello.i Source program (text)‏ Modified source program (text)‏ # 1 "hello.c" # 1 "<built-in>" # 1 "<command line>" # 1 "hello.c" # 1 "/usr/include/stdio.h" 1 3 4 …………………………………….. typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; ……………………………………….. int main() { printf(“Hello World”); } #include <stdio.h> int main() { printf(“Hello World”); } cpphello.c > hello.i

  8. Compiler .file "hello.c" .section .rodata .LC0: .string "Hello World" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax addl $15, %eax addl $15, %eax shrl $4, %eax sall $4, %eax subl %eax, %esp subl $12, %esp pushl $.LC0 call printf addl $16, %esp leave ret .size main, .-main .section .note.GNU-stack,"",@progbits .ident "GCC: (GNU) 3.4.1" # 1 "hello.c" # 1 "<built-in>" # 1 "<command line>" # 1 "hello.c" # 1 "/usr/include/stdio.h" 1 3 4 …………………………………….. typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; ……………………………………….. int main() { printf(“Hello World”); } Compiler (cc1)‏ hello.s hello.i gcc -Wall -S hello.i > hello.s

  9. Assembler .file "hello.c" .section .rodata .LC0: .string "Hello World" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax addl $15, %eax addl $15, %eax shrl $4, %eax sall $4, %eax subl %eax, %esp subl $12, %esp pushl $.LC0 call printf addl $16, %esp leave ret .size main, .-main .section .note.GNU-stack,"",@progbits .ident "GCC: (GNU) 3.4.1" Assembler (as)‏ hello.s hello.o 0000500 nulnulnulnul esc nulnulnul ht nulnulnulnulnulnulnul 0000520 nulnulnulnuldetxnulnuldlenulnulnul ht nulnulnul 0000540 sohnulnulnuleotnulnulnulbsnulnulnul % nulnulnul 0000560 sohnulnulnuletxnulnulnulnulnulnulnuldnulnulnul 0000600 nulnulnulnulnulnulnulnulnulnulnulnuleotnulnulnul 0000620 nulnulnulnul + nulnulnulbsnulnulnuletxnulnulnul 0000640 nulnulnulnuldnulnulnulnulnulnulnulnulnulnulnul 0000660 nulnulnulnuleotnulnulnulnulnulnulnul 0 nulnulnul 0000700 sohnulnulnulstxnulnulnulnulnulnulnuldnulnulnul 0000720 ff nulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0000740 nulnulnulnul 8 nulnulnulsohnulnulnulnulnulnulnul 0000760 nulnulnulnulpnulnulnulnulnulnulnulnulnulnulnul 0001000 nulnulnulnulsohnulnulnulnulnulnulnul H nulnulnul 0001020 sohnulnulnulnulnulnulnulnulnulnulnulpnulnulnul 0001040 2 nulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0001060 nulnulnulnul dc1 nulnulnuletxnulnulnulnulnulnulnul 0001100 nulnulnulnul " nulnulnul Q nulnulnulnulnulnulnul 0001120 nulnulnulnulsohnulnulnulnulnulnulnulsohnulnulnul 0001140 stxnulnulnulnulnulnulnulnulnulnulnul , stxnulnul 0001160 sp nulnulnulnlnulnulnulbsnulnulnuleotnulnulnul 0001200 dlenulnulnul ht nulnulnuletxnulnulnulnulnulnulnul 0001220 nulnulnulnul L etxnulnulnaknulnulnulnulnulnulnul 0001240 nulnulnulnulsohnulnulnulnulnulnulnulnulnulnulnul 0001260 nulnulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0001300 nulnulnulnulnulnulnulnuleotnulq del nulnulnulnul 0001320 nulnulnulnulnulnulnulnuletxnulsohnulnulnulnulnul 0001340 nulnulnulnulnulnulnulnuletxnuletxnulnulnulnulnul 0001360 nulnulnulnulnulnulnulnuletxnuleotnulnulnulnulnul 0001400 nulnulnulnulnulnulnulnuletxnulenqnulnulnulnulnul 0001420 nulnulnulnulnulnulnulnuletxnulacknulnulnulnulnul 0001440 nulnulnulnulnulnulnulnuletxnulbelnul ht nulnulnul 0001460 nulnulnulnul . nulnulnul dc2 nulsohnul so nulnulnul 0001500 nulnulnulnulnulnulnulnuldlenulnulnulnulhel 0001520 lo . cnulm a innulprintf 0001540 nulnulnulnul sp nulnulnulsohenqnulnul % nulnulnul 0001560 stx ht nulnul 0001564 as hello.s -o hello.o od –a hello.o

  10. Linker printf.o Linker (ld)‏ hello.o hello Relocatable object programs (binary)‏ Executable object program (binary)‏ 0000500 nulnulnulnul esc nulnulnul ht nulnulnulnulnulnulnul 0000520 nulnulnulnuldetxnulnuldlenulnulnul ht nulnulnul 0000540 sohnulnulnuleotnulnulnulbsnulnulnul % nulnulnul 0000560 sohnulnulnuletxnulnulnulnulnulnulnuldnulnulnul 0000600 nulnulnulnulnulnulnulnulnulnulnulnuleotnulnulnul 0000620 nulnulnulnul + nulnulnulbsnulnulnuletxnulnulnul 0000640 nulnulnulnuldnulnulnulnulnulnulnulnulnulnulnul 0000660 nulnulnulnuleotnulnulnulnulnulnulnul 0 nulnulnul 0000700 sohnulnulnulstxnulnulnulnulnulnulnuldnulnulnul 0000720 ff nulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0000740 nulnulnulnul 8 nulnulnulsohnulnulnulnulnulnulnul 0000760 nulnulnulnulpnulnulnulnulnulnulnulnulnulnulnul 0001000 nulnulnulnulsohnulnulnulnulnulnulnul H nulnulnul 0001020 sohnulnulnulnulnulnulnulnulnulnulnulpnulnulnul 0001040 2 nulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0001060 nulnulnulnul dc1 nulnulnuletxnulnulnulnulnulnulnul 0001100 nulnulnulnul " nulnulnul Q nulnulnulnulnulnulnul 0001120 nulnulnulnulsohnulnulnulnulnulnulnulsohnulnulnul 0001140 stxnulnulnulnulnulnulnulnulnulnulnul , stxnulnul 0001160 sp nulnulnulnlnulnulnulbsnulnulnuleotnulnulnul 0001200 dlenulnulnul ht nulnulnuletxnulnulnulnulnulnulnul 0001220 nulnulnulnul L etxnulnulnaknulnulnulnulnulnulnul 0001240 nulnulnulnulsohnulnulnulnulnulnulnulnulnulnulnul 0001260 nulnulnulnulnulnulnulnulnulnulnulnulsohnulnulnul 0001300 nulnulnulnulnulnulnulnuleotnulq del nulnulnulnul 0001320 nulnulnulnulnulnulnulnuletxnulsohnulnulnulnulnul 0001340 nulnulnulnulnulnulnulnuletxnuletxnulnulnulnulnul 0001360 nulnulnulnulnulnulnulnuletxnuleotnulnulnulnulnul 0001400 nulnulnulnulnulnulnulnuletxnulenqnulnulnulnulnul 0001420 nulnulnulnulnulnulnulnuletxnulacknulnulnulnulnul 0001440 nulnulnulnulnulnulnulnuletxnulbelnul ht nulnulnul 0001460 nulnulnulnul . nulnulnul dc2 nulsohnul so nulnulnul 0001500 nulnulnulnulnulnulnulnuldlenulnulnulnulhel 0001520 lo . cnulm a innulprintf 0001540 nulnulnulnul sp nulnulnulsohenqnulnul % nulnulnul 0001560 stx ht nulnul 0001564 gcchello.o –o hello 0000000 del E L F sohsohsohnulnulnulnulnulnulnulnulnul 0000020 stxnuletxnulsohnulnulnul @ stxeotbs 4 nulnulnul 0000040 X crnulnulnulnulnulnul 4 nul sp nulbelnul ( nul 0000060 ! nulrsnulacknulnulnul 4 nulnulnul 4 nuleotbs 0000100 4 nuleotbs ` nulnulnul ` nulnulnulenqnulnulnul 0000120 eotnulnulnuletxnulnulnul dc4 sohnulnul dc4 soheotbs 0000140 dc4 soheotbs dc3 nulnulnul dc3 nulnulnuleotnulnulnul 0000160 sohnulnulnulsohnulnulnulnulnulnulnulnulnuleotbs 0000200 nulnuleotbsbseotnulnulbseotnulnulenqnulnulnul 0000220 nuldlenulnulsohnulnulnulbseotnulnulbs dc4 eotbs 0000240 bs dc4 eotbsnulsohnulnuleotsohnulnulacknulnulnul 0000260 nuldlenulnulstxnulnulnul dc4 eotnulnul dc4 dc4 eotbs 0000300 dc4 dc4 eotbs H nulnulnul H nulnulnulacknulnulnul 0000320 eotnulnulnuleotnulnulnul ( sohnulnul ( soheotbs 0000340 ( soheotbs sp nulnulnul sp nulnulnuleotnulnulnul 0000360 eotnulnulnul Q etdnulnulnulnulnulnulnulnul 0000400 nulnulnulnulnulnulnulnulnulnulnulnulacknulnulnul 0000420 eotnulnulnul / lib / ld - linu 0000440 x . so . 2 nulnuleotnulnulnuldlenulnulnul 0000460 sohnulnulnul G N U nulnulnulnulnulstxnulnulnul 0000500 stxnulnulnulenqnulnulnuletxnulnulnulacknulnulnul 0000520 enqnulnulnulsohnulnulnuletxnulnulnulnulnulnulnul 0000540 nulnulnulnulnulnulnulnulstxnulnulnulnulnulnulnul …………………………………………………………………………….. od –a hello

  11. Finally… • $ gcchello.o -o hello • $ ./hello • Hello World$

  12. How do you say “Hello World”?

  13. Typical Organization of System CPU Register file ALU PC System bus Memory bus Main memory Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk hello executable stored on disk

  14. CPU Register file ALU PC System bus Memory bus Main memory "hello" Bus interface I/O bridge I/O bus Expansion slots for other devices such as network adapters USB controller Graphics adapter Disk controller Mouse Keyboard Display Disk User types "hello" Reading hello command from keyboard

  15. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Summary • Representations in memory, pointers, strings

  16. 0 1 0 1.1V 0.9V 0.2V 0.0V Everything is bits • Each bit is 0 or 1 • By encoding/interpreting sets of bits in various ways • Computers determine what to do (instructions) • … and represent and manipulate numbers, sets, strings, etc… • Why bits? Electronic Implementation • Easy to store with bistable elements • Reliably transmitted on noisy and inaccurate wires

  17. For example, can count in binary • Base 2 Number Representation • Represent 1521310 as 111011011011012 • Represent 1.2010 as 1.0011001100110011[0011]…2 • Represent 1.5213 X 104 as 1.11011011011012 X 213

  18. 15 14 10 13 11 12 0011 1111 1110 0000 0001 0010 1100 1101 1011 0100 0101 1010 0110 1001 0111 1000 3 8 8 4 5 7 6 6 F 4 2 5 2 A 1 9 D B 1 9 E 7 3 0 0 C Decimal Binary Hex Encoding Byte Values • Byte = 8 bits • Binary 000000002 to 111111112 • Decimal: 010 to 25510 • Hexadecimal 0016 to FF16 • Base 16 number representation • Use characters ‘0’ to ‘9’ and ‘A’ to ‘F’ • Write FA1D37B16 in C as • 0xFA1D37B • 0xfa1d37b

  19. Example Data Representations

  20. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Summary • Representations in memory, pointers, strings

  21. Boolean Algebra • Developed by George Boole in 19th Century • Algebraic representation of logic • Encode “True” as 1 and “False” as 0 • And • A&B = 1 when both A=1 and B=1 • Or • A|B = 1 when either A=1 or B=1 • Not • ~A = 1 when A=0 • Exclusive-Or (Xor) • A^B = 1 when either A=1 or B=1, but not both

  22. General Boolean Algebras • Operate on Bit Vectors • Operations applied bitwise • All of the Properties of Boolean Algebra Apply 01101001 & 01010101 01000001 01101001 | 01010101 01111101 01101001 ^ 01010101 00111100 ~ 01010101 10101010 01000001 01111101 00111100 10101010

  23. Example: Representing & Manipulating Sets • Representation • Width w bit vector represents subsets of {0, …, w–1} • aj = 1 if j ∈ A • 01101001 { 0, 3, 5, 6 } • 76543210 • 01010101 { 0, 2, 4, 6 } • 76543210 • Operations • & Intersection 01000001 { 0, 6 } • | Union 01111101 { 0, 2, 3, 4, 5, 6 } • ^ Symmetric difference 00111100 { 2, 3, 4, 5 } • ~ Complement 10101010 { 1, 3, 5, 7 }

  24. Bit-Level Operations in C • Operations &, |, ~, ^ Available in C • Apply to any “integral” data type • long, int, short, char, unsigned • View arguments as bit vectors • Arguments applied bit-wise • Examples (Char data type) • ~0x41 ➙ 0xBE • ~010000012 ➙ 101111102 • ~0x00 ➙ 0xFF • ~000000002 ➙ 111111112 • 0x69 & 0x55 ➙ 0x41 • 011010012 & 010101012 ➙ 010000012 • 0x69 | 0x55 ➙ 0x7D • 011010012 | 010101012➙ 011111012

  25. Contrast: Logic Operations in C • Contrast to Logical Operators • &&, ||, ! • View 0 as “False” • Anything nonzero as “True” • Always return 0 or 1 • Early termination • Examples (char data type) • !0x41 ➙ 0x00 • !0x00 ➙ 0x01 • !!0x41 ➙ 0x01 • 0x69 && 0x55 ➙ 0x01 • 0x69 || 0x55 ➙ 0x01 • p && *p (avoids null pointer access due to lazy evaluation)

  26. Contrast: Logic Operations in C • Contrast to Logical Operators • &&, ||, ! • View 0 as “False” • Anything nonzero as “True” • Always return 0 or 1 • Early termination • Examples (char data type) • !0x41 ➙ 0x00 • !0x00 ➙ 0x01 • !!0x41 ➙ 0x01 • 0x69 && 0x55 ➙ 0x01 • 0x69 || 0x55 ➙ 0x01 • p && *p (avoids null pointer access) Watch out for && vs. & (and || vs. |)… one of the more common oopsies in C programming

  27. Argument x Argument x Arith. >> 2 Arith. >> 2 Log. >> 2 Log. >> 2 11101000 00101000 01100010 00010000 00011000 00011000 10100010 00010000 11101000 00101000 00010000 11101000 00010000 00010000 00011000 00011000 00011000 00011000 00010000 00101000 << 3 << 3 Shift Operations • Left Shift: x << y • Shift bit-vector x left y positions • Throw away extra bits on left • Fill with 0’s on right • Right Shift: x >> y • Shift bit-vector x right y positions • Throw away extra bits on right • Logical shift • Fill with 0’s on left • Arithmetic shift • Replicate most significant bit on right • Undefined Behavior • Shift amount < 0 or ≥ word size C, however, has only one right shift operator, >>. Many C compilers choose which right shift to perform depending on what type of integer is being shifted; often signed integers are shifted using the arithmetic shift, and unsigned integers are shifted using the logical shift.

  28. Swap Challenge: Can you code swap function without using a temporary variable? Hint: Use bitwise XOR (^) void swap(int *x, int *y)‏ { int temp; temp = *x; *x = *y; *y = temp; }

  29. A^B B A^B (A^B)^B = A (A^B)^A = B A B A Swappin with Xor void funny(int *x, int *y) { *x = *x ^ *y; /* #1 */ *y = *x ^ *y; /* #2 */ *x = *x ^ *y; /* #3 */ } • Bitwise Xor is a form of addition • With extra property that every value is its own additive inverse A ^ A = 0 *x *y Begin A B 1 2 3 End

  30. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Summary • Representations in memory, pointers, strings • Summary

  31. Encoding Integers Unsigned Two’s Complement • C short 2 bytes long • Sign Bit • For 2’s complement, most significant bit indicates sign • 0 for nonnegative • 1 for negative short int x = 15213; short int y = -15213; Sign Bit

  32. Two-complement Encoding Example (Cont.) x = 15213: 00111011 01101101 y = -15213: 11000100 10010011

  33. Unsigned Values UMin = 0 000…0 UMax = 2w – 1 111…1 Two’s Complement Values TMin = –2w–1 100…0 TMax = 2w–1 – 1 011…1 Other Values Minus 1 111…1 Numeric Ranges Values for W = 16

  34. Values for Different Word Sizes • Observations • |TMin| = TMax + 1 • Asymmetric range • UMax = 2 * TMax + 1 • C Programming • #include<limits.h> • Declares constants, e.g., • ULONG_MAX • LONG_MAX • LONG_MIN • Values platform specific

  35. X B2U(X) B2T(X) 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 –8 1001 9 –7 1010 10 –6 1011 11 –5 1100 12 –4 1101 13 –3 1110 14 –2 1111 15 –1 Unsigned & Signed Numeric Values • Equivalence • Same encodings for nonnegative values • Uniqueness • Every bit pattern represents unique integer value • Each representable integer has unique bit encoding •  Can Invert Mappings • U2B(x) = B2U-1(x) • Bit pattern for unsigned integer • T2B(x) = B2T-1(x) • Bit pattern for two’s comp integer

  36. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Summary • Representations in memory, pointers, strings

  37. Mapping Between Signed & Unsigned • Mappings between unsigned and two’s complement numbers:Keep bit representations and reinterpret Unsigned Two’s Complement T2U x ux T2B B2U X Maintain Same Bit Pattern Two’s Complement Unsigned U2T ux x U2B B2T X Maintain Same Bit Pattern

  38. T2U U2T Mapping Signed  Unsigned

  39. = +/- 16 Mapping Signed  Unsigned

  40. + - + + + + • • • • • • + + + + + + Relation between Signed & Unsigned Unsigned Two’s Complement T2U x ux T2B B2U X Maintain Same Bit Pattern w–1 0 ux x Large negative weight becomes Large positive weight

  41. Conversion Visualized • 2’s Comp.  Unsigned • Ordering Inversion • Negative  Big Positive UMax UMax – 1 TMax+ 1 Unsigned Range TMax TMax 2’s Complement Range 0 0 –1 –2 TMin

  42. Signed vs. Unsigned in C • Constants • By default are considered to be signed integers • Unsigned if have “U” as suffix 0U, 4294967259U • Casting • Explicit casting between signed & unsigned same as U2T and T2U inttx, ty; unsigned ux, uy; tx = (int) ux; uy = (unsigned) ty; • Implicit casting also occurs via assignments and procedure calls tx = ux; uy = ty;

  43. Casting Surprises • Expression Evaluation • If there is a mix of unsigned and signed in single expression, signed values implicitly cast to unsigned • Including comparison operations <, >, ==, <=, >= • Examples for W = 32: TMIN = -2,147,483,648 , TMAX = 2,147,483,647 • Constant1 Constant2 Relation Evaluation 0 0U -1 0 -1 0U 2147483647 -2147483647-1 2147483647U -2147483647-1 -1 -2 (unsigned)-1 -2 2147483647 2147483648U 2147483647 (int) 2147483648U 0 0U == unsigned -1 0 < signed -1 0U > unsigned 2147483647 -2147483648 > signed 2147483647U -2147483648 < unsigned -1 -2 > signed (unsigned) -1 -2 > unsigned 2147483647 2147483648U < unsigned 2147483647 (int) 2147483648U > signed

  44. SummaryCasting Signed ↔ Unsigned: Basic Rules • Bit pattern is maintained • But reinterpreted • Can have unexpected effects: adding or subtracting 2w • Expression containing signed and unsigned int • int is cast to unsigned!!

  45. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Summary • Representations in memory, pointers, strings

  46. w X • • • • • • X • • • • • • w k Sign Extension • Task: • Given w-bit signed integer x • Convert it to w+k-bit integer with same value • Rule: • Make k copies of sign bit: • X = xw–1 ,…, xw–1 , xw–1 , xw–2 ,…, x0 k copies of MSB

  47. Decimal Hex Binary 15213 x 3B 6D 00111011 01101101 15213 ix 00 00 3B 6D 00000000 00000000 00111011 01101101 -15213 y C4 93 11000100 10010011 -15213 iy FF FF C4 93 11111111 11111111 11000100 10010011 Sign Extension Example short intx = 15213; int ix = (int) x; short inty = -15213; intiy = (int) y; • Converting from smaller to larger integer data type • C automatically performs sign extension

  48. Summary:Expanding, Truncating: Basic Rules • Expanding (e.g., short int to int) • Unsigned: zeros added • Signed: sign extension • Both yield expected result • Truncating (e.g., unsigned to unsigned short) • Unsigned/signed: bits are truncated • Result reinterpreted • Unsigned: mod operation • Signed: similar to mod • For small numbers yields expected behavior

  49. Today: Bits, Bytes, and Integers • Representing information as bits • Bit-level manipulations • Integers • Representation: unsigned and signed • Conversion, casting • Expanding, truncating • Addition, negation, multiplication, shifting • Representations in memory, pointers, strings • Summary

  50. • • • • • • • • • • • • Unsigned Addition u • Standard Addition Function • Ignores carry output • Implements Modular Arithmetic s = UAddw(u , v) = u + v mod 2w Operands: w bits v + True Sum: w+1 bits u + v UAddw(u , v) Discard Carry: w bits

More Related