# 1. Introduction to the labs, computer number formats, numeral systems, entrance test

## Exercise outline

1. requirements and evaluations
2. laboratory and computer system introduction
3. basic data types (integer number) storage in computer memory, program in C
4. integer representation, addition, subtraction, multiplication, division
5. real number represetation (in IEEE 754)

## What should I repeat before the first exercise

1. binary representation and hexadecimal numbers
2. C language syntax
3. terms little and big endian
4. the second complement code
5. logic operations (and, or, invert, rotation, …)
6. two's complement code and IEEE 754.
7. to understand the program from the last class.

## What shall we do on the first exercise

Aim of this exercise is to get familiar with classroom, to repeat some basic terms and number representation in computer systems.

The exercise will be based on following C code. It prints number representation in computer memory. We shall modify the code during the class.

#include <stdio.h>

#define PRINT_MEM(a) print_mem((unsigned char*)&(a), sizeof(a))

void print_mem(unsigned char *ptr, int size) {
int i;
printf("address = 0x%08lx\n", (long unsigned int)ptr);

for (i = 0; i < size; i++) {
printf("0x%02x ", *(ptr+i));
}

printf("\n");
}

int main() {
unsigned int unsig = 5;
int sig = -5;

printf("value = %d\n", unsig);
PRINT_MEM(unsig);

printf("\nvalue = %d\n", sig);
PRINT_MEM(sig);

return 0;
}

To compile the program: gcc -Wall -ansi -pedantic ./program.c

1. Compile and execute program above
• Explain output of the program
• Alter the code to print representation of other data types (float, char, double, long, etc…)
• Alter the code to print numbers and their representation between -16…15.
• Modify the program to add and subtract integer numbers and print arguments and results (in “normal” form and computer representation).
• Try to add and subtract negative and positive numbers. Try to cause integer overflow and underflow.
2. Integer addition and subtraction in two's complement representation
• add and subtract two integer numbers. For example 5+(-6) and 5-(-6).
• repeat the operations with different numbers and check your results with the computer program from the first exercise.
• When the underflow and overflow can happen? How can we detect, that it had occured?
3. Integer multiplication
• multiply two integers, For example 7*6.
• is there any difference when multiplying negative numbers? (e.g. -7*6, (-7)*(-6), etc…)
• show how to speed-up the multiplier? (use many adders instead repetitively using one).
4. Integer division
• divide integers 42/7, 43/7
• does the algorithm change when we use negative numbers?
5. Real number representation (IEEE 754)
• binary representation of real numbers (float - 32bit, double - 64bit)
• show binary representation of -0.75. Check your result with program from the last exercise.
• find decimal number for float binary number 0xC0A00000 in IEEE754.
• explain who to add numbers 9.999*10^1 and 1.1610*10^(-1) in decimal representation. Assume that it is possible to store only 4 digits in mantisa and 2 digits in exponent.
• Hint: 1) align numbers 2) addition 3) normalization 4) round numbers.
• in binary representation add 0.5 and -0.4375
• in decimal representation show multiplication of 1.110*10^10 * 9.200*10^(-5)
• in binary representation multiply 0.5 and -0.4375

## Homeworks

• homeworks 1 to 3 will be given and submitted via submission system. https://dcenet.felk.cvut.cz/apo/
• You have to log in into the submission system and on the “Assignments” page there is a list of opened assignments.
• If you want to go through the submission procedure, you can use the 1st training homework to try.

## Computer network in lab KN:E-307

In this semester we have started a new OS installation that allows students to work with their home directories. After the computer is turned on a boot loader menu pops up and you can choose of:

• Boot from a local hard-drive (OS loaded from the central repository). You can to do anything with the OS, but you . (Backup option if you can not log in into prefered Debian Linux)
• Load a fresh copy of OS from the central repository
• Run networked Debian Linux (prefered version).

The computer access and logins are authenticated against Kerberos server of Department of Computer Sciences.

A password for access to GNU-Linux workstations at Department of Computer Sciences can be set on a page http://www.felk.cvut.cz/?setLang=en , from a section IT services at Charles Square

Set up the password for laboratories KN:E-307, KN:E-310, KN:E-311, KN:E-331, T2:H1-130, T2:H1-131.