Answer:
// CPP program to Convert characters
// of a string to opposite case
#include<iostream>
using namespace std;
// Function to convert characters
// of a string to opposite case
void convertOpposite(string &str)
{
int ln = str.length();
// Conversion according to ASCII values
for (int i=0; i<ln; i++)
{
if (str[i]>='a' && str[i]<='z')
//Convert lowercase to uppercase
str[i] = str[i] - 32;
else if(str[i]>='A' && str[i]<='Z')
//Convert uppercase to lowercase
str[i] = str[i] + 32;
}
}
// Driver function
int main()
{
string str = "GeEkSfOrGeEkS";
// Calling the Function
convertOpposite(str);
cout << str;
return 0;
}
Explanation:
Answer:
The method of converting a base 10 or decimal number into base 2 or binary number is as following:-
- Divide the decimal number by 2 and store it's remainder.
- keep dividing the decimal number by 2 until it becomes 0 and also keep storing it's remainder.
- Then write the remainders in reverse order.This the binary number.
Refer the attached image for better explanation.
A) or B) not sure for sure.... Hope it helps
For a direct mapped cache the general rule is: first figure out the bits of the offset (the right-most bits of the address), then figure out the bits of the index (the next-to right-most address bits), and then the tag is everything left over (on the left side).
One way to think of a direct mapped cache is as a table with rows and columns. The index tells you what row to look at, then you compare the tag for that row, and if it matches, the offsettells you which column to use. (Note that the order you use the parts: index/tag/offset, is different than the order in which you figure out which bits are which: offset/index/tag.)
So in part (a) The block size is 1 word, so you need 0 offset bits (because <span><span><span>20</span>=1</span><span><span>20</span>=1</span></span>). You have 16 blocks, so you need 4 index bits to give 16 different indices (because <span><span><span>24</span>=16</span><span><span>24</span>=16</span></span>). That leaves you with the remaining 28 bits for the tag. You seem to have gotten this mostly right (except for the rows for "180" and "43" where you seem to have missed a few bits, and the row for "181" where you interchanged some bits when converting to binary, I think). You are correct that everything is a miss.
For part (b) The block size is 2 words, so you need 1 offset bit (because <span><span><span>21</span>=2</span><span><span>21</span>=2</span></span>). You have 8 blocks, so you need 3 index bits to give 8 different row indices (because <span><span><span>23</span>=8</span><span><span>23</span>=8</span></span>). That leaves you with the remaining 28 bits for the tag. Again you got it mostly right except for the rows for "180" and "43" and "181". (Which then will change some of the hits and misses.)