Skip to main content

C Programming Questions - Part 2


1) How do you determine the size and range of the following data types ?
  • char
  • unsigned char
  • short int
  • unsigned int
  • unsigned long float

Ans:-
limits.h header file defines the minimum and maximum range macros for each of the data types , sizeof(datatype) returns the number of bytes used by the datatype in current machine.

2) Write logical expressions that tests whether a given character variable c is
  • lowercase letter
  • uppercase letter
  • digit
  • white space(includes space,tab,newline)

Ans:-
  • lowercase letter = (c >= 'a' && c <= 'z')
  • uppercase letter = (c >= 'A' && c <= 'Z')
  • digit = (c >= '0' && c <= '9')
  • white space(includes space,tab,newline) = (c == ' ' || c == '\t' || c == '\n')


3) Consider unsigned int val=0xCAFE; Write expressions using bit wise operators that do the following:
  • test if at least three of last four bits(LSB) are on
  • reverse the byte order(i.e.,produce val=0xFECA)
  • rotate four bits(i.e.,produce val=0xECAF)
Ans:-
  • test if at least three of last four bits(LSB) are on – 
    obtain the last last four digits value and check with the possible values 0x07,0x0B,0x0D,0x0E,0x0F.

    Unsigned int bits = (val & 0x0F) or (val & ~((~0)<< 4)) – LSB 4 bits (bits == 0x07 || bits == 0x0B || bits >= 0x0D)
  • reverse the byte order(i.e.,produce val=0xFECA) -

    unsigned int val = 0xCAFE;

    unsigned int res =0;

    res = ((val & 0xff ) << 8) | (val >> 8);
  • rotate four bits(i.e.,produce val=0xECAF) - 
    unsigned int val = 0xCAFE;
    unsigned int res =0;
    res = ( val >> 4) | ((val & 0xf) << 12);

4) Using precedence rules,evaluate the following expressions and determine the value of the variables (without running the code).Also rewrite them using parenthesis to make the order explicit. 
  • Assume(x=0xFF33,MASK=0xFF00).Expression:c=x&MASK==0;
  • Assume(x=10,y=2,z=2;).Expression:z=y=x+++++y∗2;
  • Assume(x=10,y=4,z=1;).Expression:y>>=x&0x2&&z

Ans:-
  • The operator precedence is ==,&,=.
    • Thus,the expression is equivalent to c=(x&(MASK==0)). 
    • i,e x=0xFF33,c=0.
  • The operator precedence is ++,*,+.
    • Thus,the expression is equivalent to z=(x++)+((++y)∗2).
    • i,e x=11,y=3,z=10+3∗2=16.
  • The operator precedence is &,&&,>>=.
    • Thus,the expression is equivalent to y>>=(x&0x2)&&z.
    • i,e x=10,y=2,z=1.

5) Determine if the following statements have any errors. If so,highlight them and explain why.
  •  int 2ndvalue=10;
  • Assume(x=0,y=0,alliszero=1).alliszero=(x=1)&&(y=0);
  • Assume(x=10,y=3,z=0;).y=++x+y;z=z−−>x;
  • Assume that we want to test if last four bits of x are on. 
    • (int MASK=0xF;ison=x&MASK==MASK)

Ans:-
  • variable value should not start with digit.
  •  = operator should be replaced with ==.i,e alliszero=(x==1)&&(y==0).
  • this is confusing statement but its correct. y=(++x)+y;z=(z−−)>x;
  • we need to add () to expression if we need the desired result 
    • (int MASK=0xF;ison=x&(MASK==MASK))

Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C