Group Discounts available for 3+ students and Corporate Clients

Type Cast operator and Number System in C

Type cast :

• It is a concept of converting one data type values into another data type.
• in ‘c’ programming language, “type castings” are classified into two types. i.e
• Explicit type casting
• when we are converting lower data types value into higher data types. Then it is called. Implicit type casting process
• Implicit type casting is under the control of compiler
• As a programmer, it is not required to consider implicit type casting process.
• When we are converting higher data types values into lower data type then it is called Explicit type casting.
• As a programmer it is mandatary to handle explicit type casting process because data overflow will occur

syntax:

datatype1           variable1=value;

Datatype2           variable2;

variable2=(Data type2) variable1;

Ex:1  int i=45;

float f;

f=1;             //f=(float)i;

Ex:-2           double d=123456.789;

long intl;

l=(long int)d;

• Void main()

{

float f;

f=7.6;

if(f==7.6)                       // if(float==double)4B==8B by default

printf(“welcome”);

else

printf(“Hello”);

o/p: Hello.

• By default , any type of real values is double that why, when we are comparing the float data with double then automatically condition became false.

void main()

{

float f;

f=3.8;

if(f==3.8f)  ||  if(float=float)  4B=4B

printf(“welcome”);

else

printf(“Hello”);

o/p : Welcome

Void main()

{

int i;

float f;

i=6;

f=6.0;

if(f==i)

printf(“welcome”);

else

printf(“Hello”);

}

o/p: Welcome

When we are comparing integer value with float then both are became equal, if fractional part is not available in float i.e “.0”

void main()

{

float f;

f=3.0;

printf(“welcome”);

else

printf(“Hello”);

o/p: welcome

• void main()

{

flaot f;

f=9.5;

if(f==9.5)

printf(“welcome”);

else

printf(“Hello”);

}

o/p: welcome

Number system :-

• Always Number system will decide that how the numeric values require to hold in a memory.
• Number systems are classified into four types.
1. decimal number,
2. Octal Number system.
4. Binary.
• The Base value of decimal is 10 and the range 0 to 9.
• When we require to print the decimal value, then we required to use %d format specifier
• Decimal can be represent –ve and =ve format data also.
• The base value of octal number system is 8 and the range is 0 to 7
• when we require to print the octal format data, then we require to use %0 format specifier.
• If any numberic value is started with Zero, it indicates octal number.

ex:- 013, 0474,0878

• The base value of hexadecimal is 16 and the range 0-9ABCDEF
• When we require to print octal data, then require to use %x %h %p and %x format specifier
• When we require to represent any hexadecimal value, then we require to use “ OX “ as a prefix

ex: 0X12, 0X-A/3, 0XABC4

10                                  012                                0X4

81X1X80X2

= 8X2

83                                  0 1 2 3                                              0X53

83X0+82X1+81X2+80X3

64+16+3

Error     0181 error          Error

0981

range(0-7)

161                      0241                    0XA1

291                      0443                    0X123

Binary Number System :-

• The base value of binary Number system is 2 and the range 0,1
• When the memory will represented, always it holds in the form of binary.
• when we are representing the data in the binary complete data will be represented in the forms 1’s and ’0’s
• If there no any format specifiers are available to print binary representation on console

 Decimal Binary 1 0001 2 0010 3 0011 4 0100 5 0110 6 0110 7 1000 8 1000 9 1001

35    0010          0011 (32+2+1)

61     0011          1101 (32+16+8+4+1)

127   0111          1111(64+32+16+8+4+2+1)

255    1111           1111

32767   0111        1111          1111          1111

65535  1111          1111          1111          1111

 No.of bits rep No.of combinations max value max 1 2(21) 1(21-1) 01 2 4(22) 3(22-1) 11 3 8(23) 7(23-1) 0111 4 16(24) 15(24-1) 1111 5 32(25) 31(25-1) 0001 111 6 64(26) 63(26-1) 0011 1111 7 128(27) 127(27-1) 0111   1111 8 256(28) 255/-1(28-1) 1111 1111 9 65536(216) 65535/-1(216– 1111  1111 1111 1111 10

 8bits      –              1 Byte1024B    –              1KB 1024KB –               1MB 1024MB –             1GB 1024GB-               1TB

Int i:-

On Dos based compiler the size of int is 2 bytes and the range from  -32768 to + 32767

For representing any integer value, we require 16 bit combination i.e 65536 representations.

Among those all combinations, 50% will represent negative data and remaining 50% will represents +ve data.

 8bits      –              1 Byte1024B    –              1KB 1024KB –               1MB 1024MB –             1GB 1024GB-               1TB

• Left side most signigicant bit is called signed bit is called signed bit
• Always signed bit will decides the return value of binary representation
• If sign bit is “0” and remaining b all bits are Zero’s then it gives minimum value of +ve sign ie ‘0’
• if sign bit is ‘0’ and remaining all bits are 1’s then it gives maximum value of +ve sign ie 32767
• If the sign bit is ‘1’ and remaining all bits are 0’s then it gives minimum value of –ve sign i.e 32768
• If the sign bit is ‘1’ and remaining all bits are 1’s then it gives maximum value of –ve sign ie -1

int i;

i=32767+1;

32467  0111     1111          1111          1111

1 0000      0000           0000           0001

1 1 1 1     1 1 1 1      1 1 1 1          1 1

10000         0 0 0 0         0 0 0         0 0 0

Unsigned integer of U:

The size of unsigned int is 4 bytes and the range from 0 to 65,535

For representing any unsigned integer value, we require 16 bit

combination i.e 65536  representations.

• Among those all representations all gives +ve data only, because in unsigned type , signed bit is not available
• When we are working with integer and unsigned integer always format specifier will decide the return value of binary representation.
 %d Binary Representations %U 0 32767   -32768   -1 0000    0000   0000   0000 01111   1111   1111  1111   1000     0000   0000  0000   1111   1111    1111    1111 0 32767   32768   65535

Character of ch:-

• The size of characters is 1 byte and the range from -128 to +127
• For representing any character we require 8 bit combination i. e 256 representations.
• Among those all representations, 50% will gives +ve data and remaining 50% will give –ve data.

0000          0000     0

0111          1111           127

1000          0000    -128

1111          1111         -1

Unsigned character of ch :-

The size of unsigned character is 1 byte and the range from 0 to 255

For representing any unsigned character we require 8 bit combination i.e 256 combinations and all the representation gives +ve data only.

0000        0000     0
0111          1111         1270000

1000          0000   128

1111          1111         255

255                 -128

(-)     127                 + 127

128                     -1

When we are working with char & unsigned char, always data type will decides the return value of binary representation.

 printf(“%d   %U”, 65535,-1); -1 65535 printf(“%d    %U”,32768,-32768); -32768 32768 printf(“%U   %O   %X ”,-1,-1,-1); 65535, printf(“%d   %U”, 32768,-32768); -32768 32768 printf(“%u   %O   %X”,-1,-1,-1); 65535 0177777

For representing any octal data we require to take 3 binary bits only, for representing any hexadecimal value, we require to take 4 binary bits.

printf(“%d  %0  %u”, 327684,327684,327684);

o/p: –32768        0100000