Difference between revisions of "CSC231 Homework 4 2010"

From dftwiki3
Jump to: navigation, search
(Problem 2: C++ Programming)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
<center>
 
<font size="+2">Page under construction!</font>
 
<br \>[[File:UnderConstruction.jpg|300px]]
 
</center>
 
 
 
--[[User:Thiebaut|D. Thiebaut]] 23:00, 7 October 2010 (UTC)
 
--[[User:Thiebaut|D. Thiebaut]] 23:00, 7 October 2010 (UTC)
 
----
 
----
 
<tanbox>
 
<tanbox>
This assignment is due on Thursday, Oct 14, as it was released one day later than usual.  It is due at 11:59 p.m. + 1 minute.
+
This assignment is due on Thursday, Oct 14, as it was released one day later than usual.  It is due at 11:59 p.m. + 1 minute.  You can work in pairs on this assignment, in which case submit only one answer to each problem, and make sure both names appear in the submitted file.
 
</tanbox>
 
</tanbox>
  
Line 25: Line 20:
 
Explain carefully how you derive your answers.   
 
Explain carefully how you derive your answers.   
  
=Problem 2: C Programming=
+
=Problem 2: C++ Programming=
 +
 
 +
* Use emacs to create a file that you will call hw4.cpp
 +
* Store the following C++ program in this file:
 +
 
 +
<br />
 +
 
 +
<source lang="cpp">
 +
#include <iostream>
 +
 
 +
using namespace std;
 +
 
 +
main() {
 +
  unsigned int x, lastx;
 +
 
 +
  // print 4 blank lines
 +
  cout << endl << endl << endl << endl;
 +
 
 +
  // initialize x and show its first value
 +
  x = 3;
 +
  cout << "x = " << x << endl;
  
* Use emacs to create a file that you will call hw4.c
+
  // loop for-ever...  
* Store the following C program in this file:
+
  while ( 1 ) {
 +
    lastx = x;
 +
    x = x * 2;
 +
    // if the value of x is ever less than or equal to lastx, stop the loop
 +
    if ( x <= lastx ) {
 +
      cout << "last x = " << lastx << endl;
 +
      cout << "x = " << x << endl;
 +
      break;
 +
    }
 +
  }
 +
  cout << endl << endl << endl << endl;
 +
}
 +
</source>
  
#include <stdio.h>
 
 
void main() {
 
  //--- declare an integer variable that can store
 
  //--- only unsigned numbers. (the MSB is not a
 
  //--- sign bit).
 
  unsigned int x = 1;
 
 
  //--- keep on printing x as long as it is not 0 ---
 
  while ( x != 0 ) {
 
    printf ( "%d\n", x );
 
    //--- double the size of x ---
 
    x = x * 2;
 
  }
 
}
 
  
 
* Compile the program as follows:
 
* Compile the program as follows:
  
   gcc hw4.c -o hw4
+
   g++ hw4.cpp -o hw4
  
 
* Run the program as follows:  
 
* Run the program as follows:  
Line 58: Line 70:
  
 
;Question 2
 
;Question 2
: How many bits does C use to store integers (the variable x)?
+
: How many bits does C++ use to store integers (the variable x)?
  
 
;Question 3
 
;Question 3
: Remove the word ''unsigned'' in front of ''int'', and run the program again.  Explain its new output.  Why does the loop stop?  Do you find negative numbers in the output?  Why?
+
: Remove the word ''unsigned'' in front of ''int'', compile and run the program again.  Explain its new output.  Why does the loop stop?  Do you find negative numbers in the output?  Why?
 +
 
 +
;Question 4
 +
: Change the words "unsigned int" and replace them by "char".  Compile and run the program again.  How many bits are used by C++ to store characters?  Are characters assumed to be signed or not?
  
 
=Problem #3=
 
=Problem #3=
Line 102: Line 117:
 
;Question 3
 
;Question 3
 
: Prove that in 2's complement, -1 is always represented in binary as all the bits set to 1.
 
: Prove that in 2's complement, -1 is always represented in binary as all the bits set to 1.
 +
 +
 +
=Submission=
 +
 +
* Submit 1 file with your all your answers to all three problems.  Call the file hw4.txt and submit it as follows:
 +
 +
  submit hw4 hw4.txt
  
  

Latest revision as of 08:33, 8 October 2010

--D. Thiebaut 23:00, 7 October 2010 (UTC)


This assignment is due on Thursday, Oct 14, as it was released one day later than usual. It is due at 11:59 p.m. + 1 minute. You can work in pairs on this assignment, in which case submit only one answer to each problem, and make sure both names appear in the submitted file.


Problem 1

Assume that we want to compute the Fibonacci series with an assembly language program.

  • How many terms can we correctly display if we use unsigned bytes (8 bits) to store the Fibonacci terms?
  • How many terms if we use unsigned 16-bit words?
  • How many terms if we use usigned double-words of 32 bits?
  • How many terms if we use 64 bit integers (2 double-words)?

Explain carefully how you derive your answers.

Problem 2: C++ Programming

  • Use emacs to create a file that you will call hw4.cpp
  • Store the following C++ program in this file:


#include <iostream>

using namespace std;

main() {
  unsigned int x, lastx;

  // print 4 blank lines
  cout << endl << endl << endl << endl;

  // initialize x and show its first value
  x = 3;
  cout << "x = " << x << endl;

  // loop for-ever... 
  while ( 1 ) { 
    lastx = x;
    x = x * 2;
    // if the value of x is ever less than or equal to lastx, stop the loop
    if ( x <= lastx ) {
      cout << "last x = " << lastx << endl;
      cout << "x = " << x << endl;
      break;
    }
  }
  cout << endl << endl << endl << endl;
}


  • Compile the program as follows:
 g++ hw4.cpp -o hw4
  • Run the program as follows:
 ./hw4
Question 1
Explain the output you get from the program. Why does the loop stop?
Question 2
How many bits does C++ use to store integers (the variable x)?
Question 3
Remove the word unsigned in front of int, compile and run the program again. Explain its new output. Why does the loop stop? Do you find negative numbers in the output? Why?
Question 4
Change the words "unsigned int" and replace them by "char". Compile and run the program again. How many bits are used by C++ to store characters? Are characters assumed to be signed or not?

Problem #3

Question 1
Show the hexadecimal and binary representation of the following decimal numbers, assuming that the numbers are stored in bytes, and assuming that the system used is 2's complement.
0

10

16

127

128

-128

-127

-16

-10
Question 2
What is the 2's complement decimal equivalent of the following 16-bit numbers, shown here in hexadecimal?
FFFF

8000

7FFF

1111

1000


Question 3
Prove that in 2's complement, -1 is always represented in binary as all the bits set to 1.


Submission

  • Submit 1 file with your all your answers to all three problems. Call the file hw4.txt and submit it as follows:
 submit hw4 hw4.txt