SlideShare a Scribd company logo
Operators and Expressions
Performing Simple Calculations with C#
Svetlin Nakov
Telerik Corporation
www.telerik.com
Table of Contents
1. Operators in C# and Operator Precedence
2. Arithmetic Operators
3. Logical Operators
4. Bitwise Operators
5. Comparison Operators
6. Assignment Operators
7. Other Operators
8. Implicit and ExplicitType Conversions
9. Expressions
2
Operators in C#
Arithmetic, Logical, Comparison, Assignment, Etc.
What is an Operator?
 Operator is an operation performed over data
at runtime
 Takes one or more arguments (operands)
 Produces a new value
 Operators have precedence
 Precedence defines which will be evaluated first
 Expressions are sequences of operators and
operands that are evaluated to a single value
4
Operators in C#
 Operators in C# :
 Unary – take one operand
 Binary – take two operands
 Ternary (?:) – takes three operands
 Except for the assignment operators, all
binary operators are left-associative
 The assignment operators and the
conditional operator (?:) are right-associative
5
Categories of Operators in C#
Category Operators
Arithmetic + - * / % ++ --
Logical && || ^ !
Binary & | ^ ~ << >>
Comparison == != < > <= >=
Assignment
= += -= *= /= %= &= |=
^= <<= >>=
String concatenation +
Type conversion is as typeof
Other . [] () ?: new
6
Operators Precedence
Operators Precedence
Precedence Operators
Highest ()
++ -- (postfix) new typeof
++ -- (prefix) + - (unary) ! ~
* / %
+ -
<< >>
< > <= >= is as
== !=
&
Lower ^
8
Operators Precedence (2)
Precedence Operators
Higher |
&&
||
?:
Lowest
= *= /= %= += -= <<= >>= &= ^=
|=
9
 Parenthesis operator always has highest
precedence
 Note: prefer using parentheses, even when it
seems stupid to do so
Arithmetic Operators
Arithmetic Operators
 Arithmetic operators +, -, * are the same as in
math
 Division operator / if used on integers returns
integer (without rounding) or exception
 Division operator / if used on real numbers
returns real number or Infinity or NaN
 Remainder operator % returns the remainder
from division of integers
 The special addition operator ++ increments a
variable
11
Arithmetic Operators – Example
12
int squarePerimeter = 17;
double squareSide = squarePerimeter / 4.0;
double squareArea = squareSide * squareSide;
Console.WriteLine(squareSide); // 4.25
Console.WriteLine(squareArea); // 18.0625
int a = 5;
int b = 4;
Console.WriteLine( a + b ); // 9
Console.WriteLine( a + b++ ); // 9
Console.WriteLine( a + b ); // 10
Console.WriteLine( a + (++b) ); // 11
Console.WriteLine( a + b ); // 11
Console.WriteLine(12 / 3); // 4
Console.WriteLine(11 / 3); // 3
Arithmetic Operators –
Example (2)
13
Console.WriteLine(11.0 / 3); // 3.666666667
Console.WriteLine(11 / 3.0); // 3.666666667
Console.WriteLine(11 % 3); // 2
Console.WriteLine(11 % -3); // 2
Console.WriteLine(-11 % 3); // -2
Console.WriteLine(1.5 / 0.0); // Infinity
Console.WriteLine(-1.5 / 0.0); // -Infinity
Console.WriteLine(0.0 / 0.0); // NaN
int x = 0;
Console.WriteLine(5 / x); // DivideByZeroException
Arithmetic Operators –
Overflow Examples
14
int bigNum = 2000000000;
int bigSum = 2 * bigNum; // Integer overflow!
Console.WriteLine(bigSum); // -294967296
bigNum = Int32.MaxValue;
bigNum = bigNum + 1;
Console.WriteLine(bigNum); // -2147483648
checked
{
// This will cause OverflowException
bigSum = bigNum * 2;
}
Arithmetic Operators
Live Demo
Logical Operators
Logical Operators
 Logical operators take boolean operands and
return boolean result
 Operator ! turns true to false and false
to true
 Behavior of the operators &&, || and ^
(1 == true, 0 == false) :
17
Operation || || || || && && && && ^ ^ ^ ^
Operand1 0 0 1 1 0 0 1 1 0 0 1 1
Operand2 0 1 0 1 0 1 0 1 0 1 0 1
Result 0 1 1 1 0 0 0 1 0 1 1 0
Logical Operators – Example
 Using the logical operators:
18
bool a = true;
bool b = false;
Console.WriteLine(a && b); // False
Console.WriteLine(a || b); // True
Console.WriteLine(a ^ b); // True
Console.WriteLine(!b); // True
Console.WriteLine(b || true); // True
Console.WriteLine(b && true); // False
Console.WriteLine(a || true); // True
Console.WriteLine(a && true); // True
Console.WriteLine(!a); // False
Console.WriteLine((5>7) ^ (a==b)); // False
Logical Operators
Live Demo
Bitwise Operators
Bitwise Operators
 Bitwise operator ~ turns all 0 to 1 and all 1 to 0
 Like ! for boolean expressions but bit by bit
 The operators |, & and ^ behave like ||, && and ^
for boolean expressions but bit by bit
 The << and >> move the bits (left or right)
 Behavior of the operators|, & and ^:
21
Operation | | | | & & & & ^ ^ ^ ^
Operand1 0 0 1 1 0 0 1 1 0 0 1 1
Operand2 0 1 0 1 0 1 0 1 0 1 0 1
Result 0 1 1 1 0 0 0 1 0 1 1 0
Bitwise Operators (2)
 Bitwise operators are used on integer numbers
(byte, sbyte, int, uint, long, ulong)
 Bitwise operators are applied bit by bit
 Examples:
22
ushort a = 3; // 00000000 00000011
ushort b = 5; // 00000000 00000101
Console.WriteLine( a | b); // 00000000 00000111
Console.WriteLine( a & b); // 00000000 00000001
Console.WriteLine( a ^ b); // 00000000 00000110
Console.WriteLine(~a & b); // 00000000 00000100
Console.WriteLine( a << 1); // 00000000 00000110
Console.WriteLine( a >> 1); // 00000000 00000001
Bitwise Operators –Tips &Tricks
 How to get the bit at position p in a number n?
 How to set the bit at position p to 0?
23
int p = 5;
int n = 35; // 00000000 00100011
int mask = 1 << p; // 00000000 00100000
int nAndMask = n & mask; // 00000000 00100000
int bit = nAndMask >> p; // 00000000 00000001
Console.WriteLine(bit); // 1
int p = 5;
int n = 35; // 00000000 00100011
int mask = ~(1 << p); // 11111111 11011111
int result = n & mask; // 00000000 00000011
Console.WriteLine(result); // 3
Bitwise Operators –
Tips &Tricks (2)
 How to set the bit at position p to 1?
 How to print a binary number to the console?
24
int p = 4;
int n = 35; // 00000000 00100011
int mask = 1 << p; // 00000000 00010000
int result = n | mask; // 00000000 00110011
Console.WriteLine(result); // 3
Console.WriteLine(
Convert.ToString(result, 2).PadLeft(32, '0'));
// 00000000000000000000000000110011
Bitwise Operators
Live Demo
Comparison and
Assignment Operators
Comparison Operators
 Comparison operators are used to compare
variables
 ==, <, >, >=, <=, !=
 Comparison operators example:
27
int a = 5;
int b = 4;
Console.WriteLine(a >= b); // True
Console.WriteLine(a != b); // True
Console.WriteLine(a == b); // False
Console.WriteLine(a == a); // True
Console.WriteLine(a != ++b); // False
Console.WriteLine(a > b); // False
Assignment Operators
 Assignment operators are used to assign a
value to a variable ,
 =, +=, -=, |=, ...
 Assignment operators example:
28
int x = 6;
int y = 4;
Console.WriteLine(y *= 2); // 8
int z = y = 3; // y=3 and z=3
Console.WriteLine(z); // 3
Console.WriteLine(x |= 1); // 7
Console.WriteLine(x += 3); // 10
Console.WriteLine(x /= 2); // 5
Comparison and
Assignment Operators
Live Demo
Other Operators
Other Operators
 String concatenation operator + is used to
concatenate strings
 If the second operand is not a string, it is
converted to string automatically
31
string first = "First";
string second = "Second";
Console.WriteLine(first + second);
// FirstSecond
string output = "The number is : ";
int number = 5;
Console.WriteLine(output + number);
// The number is : 5
Other Operators (2)
 Member access operator . is used to access
object members
 Square brackets [] are used with arrays
indexers and attributes
 Parentheses ( ) are used to override the
default operator precedence
 Class cast operator (type) is used to cast one
compatible type to another
32
Other Operators (3)
 Conditional operator ?: has the form
(if b is true then the result is x else the result is y)
 The new operator is used to create new objects
 The typeof operator returns System.Type
object (the reflection of a type)
 The is operator checks if an object is
compatible with given type
33
b ? x : y
Other Operators
 Null-coalescing operator ?? is used to define a
default value for both nullable value types and
reference types
 It returns the left-hand operand if it is not null
 Otherwise it returns the right operand
34
int? x = null;
int y = x ?? -1;
int? x = 1;
int y = x ?? -1;
Here the value of y is -1
Here the value of y is 1
Other Operators – Example
 Using some other operators:
35
int a = 6;
int b = 4;
Console.WriteLine(a > b ? "a>b" : "b>=a"); // a>b
Console.WriteLine((long) a); // 6
int c = b = 3; // b=3; followed by c=3;
Console.WriteLine(c); // 3
Console.WriteLine(a is int); // True
Console.WriteLine((a+b)/2); // 4
Console.WriteLine(typeof(int)); // System.Int32
int d = new int();
Console.WriteLine(d); // 0
Other Operators
Live Demo
Implicit and Explicit
Type Conversions
ImplicitType Conversion
 Implicit type conversion
 Automatic conversion of value of one data type
to value of another data type
 Allowed when no loss of data is possible
 "Larger" types can implicitly take values of
smaller "types"
 Example:
38
int i = 5;
long l = i;
ExplicitType Conversion
 Explicit type conversion
 Manual conversion of a value of one data type
to a value of another data type
 Allowed only explicitly by (type) operator
 Required when there is a possibility of loss of
data or precision
 Example:
39
long l = 5;
int i = (int) l;
Type Conversions – Example
 Example of implicit and explicit conversions:
 Note: Explicit conversion may be used even if
not required by the compiler
40
float heightInMeters = 1.74f; // Explicit conversion
double maxHeight = heightInMeters; // Implicit
double minHeight = (double) heightInMeters; // Explicit
float actualHeight = (float) maxHeight; // Explicit
float maxHeightFloat = maxHeight; // Compilation error!
Type Conversions
Live Demo
Expressions
Expressions
 Expressions are sequences of operators,
literals and variables that are evaluated to
some value
 Examples:
43
int r = (150-20) / 2 + 5; // r=70
// Expression for calculation of circle area
double surface = Math.PI * r * r;
// Expression for calculation of circle perimeter
double perimeter = 2 * Math.PI * r;
Expressions (2)
 Expressions has:
 Type (integer, real, boolean, ...)
 Value
 Examples:
44
int a = 2 + 3; // a = 5
int b = (a+3) * (a-4) + (2*a + 7) / 4; // b = 12
bool greater = (a > b) || ((a == 0) && (b == 0));
Expression of type
int. Calculated at
compile time.
Expression
of type int.
Calculated
at runtime.
Expression of type bool.
Calculated at runtime.
Expressions
Live Demo
Summary
 We discussed the operators in C#:
 Arithmetic, logical, bitwise, comparison,
assignment and others
 Bitwise calculations
 Operator precedence
 We learned when to use implicit and explicit
type conversions
 We learned how to use expressions
46
Resources
 Boolean algebra (logic)
 http://en.wikipedia.org/wiki/Boolean_algebra_
%28logic%29
 Bitwise mask
 http://en.wikipedia.org/wiki/Mask_%28computi
ng%29
 Bitwise operation
 http://en.wikipedia.org/wiki/Bitwise_operation
 BitTwiddling Hacks
 graphics.stanford.edu/~seander/bithacks.html
47
Questions?Questions?
Operators and Expressions
http://academy.telerik.com
Exercises
1. Write an expression that checks if given integer is
odd or even.
2. Write a boolean expression that checks for given
integer if it can be divided (without remainder) by 7
and 5 in the same time.
3. Write an expression that calculates rectangle’s area
by given width and height.
4. Write an expression that checks for given integer if
its third digit (right-to-left) is 7. E. g. 1732  true.
5. Write a boolean expression for finding if the bit 3
(counting from 0) of a given integer is 1 or 0.
6. Write an expression that checks if given point (x, y)
is within a circle K(O, 5). 49
Exercises (2)
7. Write an expression that checks if given positive
integer number n (n ≤ 100) is prime. E.g. 37 is prime.
8. Write an expression that calculates trapezoid's area
by given sides a and b and height h.
9. Write an expression that checks for given point (x, y)
if it is within the circle K( (1,1), 3) and out of the
rectangle R(top=1, left=-1, width=6, height=2).
10. Write a boolean expression that returns if the bit at
position p (counting from 0) in a given integer
number v has value of 1. Example: v=5; p=1  false.
50
Exercises (3)
11. Write an expression that extracts from a given
integer i the value of a given bit number b.
Example: i=5; b=2  value=1.
12. We are given integer number n, value v (v=0 or 1)
and a position p.Write a sequence of operators that
modifies n to hold the value v at the position p from
the binary representation of n.
Example: n = 5 (00000101), p=3, v=1  13 (00001101)
n = 5 (00000101), p=2, v=0  1 (00000001)
51
Exercises (4)
13. Write a program that exchanges bits 3, 4 and 5 with
bits 24, 25 and 26 of given 32-bit unsigned integer.
14. *Write a program that exchanges bits {p, p+1, …,
p+k-1) with bits {q, q+1, …, q+k-1} of given 32-bit
unsigned integer.
52

More Related Content

PPTX
3 operators-expressions-and-statements-120712073351-phpapp01
PPT
03 Operators and expressions
PPTX
Operators expressions-and-statements
PPT
Operators and Expressions in C++
PPTX
Increment and Decrement operators in C++
PDF
Python : basic operators
PPT
Operators in C Programming
PPTX
Operators in C & C++ Language
3 operators-expressions-and-statements-120712073351-phpapp01
03 Operators and expressions
Operators expressions-and-statements
Operators and Expressions in C++
Increment and Decrement operators in C++
Python : basic operators
Operators in C Programming
Operators in C & C++ Language

What's hot (18)

PDF
Python Basic Operators
PPTX
Operators in python
PPT
Operators
PPTX
Operators in C/C++
PPT
Operator & Expression in c++
PPTX
Intro to c++
PPTX
Operators in Python
PPT
Operation and expression in c++
PPTX
Booth algorithm
PDF
Operators in python
PPTX
Few Operator used in c++
PPT
C ppt
PPT
Basics of c++ Programming Language
PPT
Mesics lecture 4 c operators and experssions
PPT
6 operators-in-c
PPTX
Python Training in Bangalore | Python Operators | Learnbay.in
PDF
Project on digital vlsi design
PPTX
Python operators
Python Basic Operators
Operators in python
Operators
Operators in C/C++
Operator & Expression in c++
Intro to c++
Operators in Python
Operation and expression in c++
Booth algorithm
Operators in python
Few Operator used in c++
C ppt
Basics of c++ Programming Language
Mesics lecture 4 c operators and experssions
6 operators-in-c
Python Training in Bangalore | Python Operators | Learnbay.in
Project on digital vlsi design
Python operators
Ad

Viewers also liked (14)

PPT
Lecture 3
PPTX
PDF
Chapter 5 - Operators in C++
PPTX
Operator Precedence and Associativity
PPT
CBSE Class XI :- Operators in C++
PPTX
Operators
PPTX
Lecture 2 C++ | Variable Scope, Operators in c++
PDF
Operator precedence
PPT
Operators in C++
PPT
Expectations (Algebra 1)
PPTX
algebraic expression class VIII
DOCX
Web design proposal sample
PDF
Sample Website Proposal Presentation
PPT
C Prog. - Operators and Expressions
Lecture 3
Chapter 5 - Operators in C++
Operator Precedence and Associativity
CBSE Class XI :- Operators in C++
Operators
Lecture 2 C++ | Variable Scope, Operators in c++
Operator precedence
Operators in C++
Expectations (Algebra 1)
algebraic expression class VIII
Web design proposal sample
Sample Website Proposal Presentation
C Prog. - Operators and Expressions
Ad

Similar to 03. operators and-expressions (20)

PPTX
3 operators-expressions-and-statements-120712073351-phpapp01
PPTX
03. Operators Expressions and statements
PPTX
Operators in c++ programming types of variables
PPS
C programming session 02
PPTX
2.overview of c#
PPTX
btwggggggggggggggggggggggggggggggisop correct (1).pptx
PPTX
OOPJ_PPT2,JAVA OPERATORS TPYE WITH EXAMPLES.pptx
PPTX
Programming presentation
PDF
Module 2_PPT_P1 POP Notes module 2 fdfd.pdf
PPTX
ppt on logical/arthimatical/conditional operators
DOC
Report on c
PPT
6 operators-in-c
PPTX
Operators in Python Arithmetic Operators
PDF
C++ notes.pdf BASIC C++ NOTES FOR BEGGINERS
PPTX
Operators in C++.pptx
PPT
Lecture 2
PDF
Python Unit 3 - Control Flow and Functions
PPTX
PDF
ICP - Lecture 5
PPT
C Sharp Jn (2)
3 operators-expressions-and-statements-120712073351-phpapp01
03. Operators Expressions and statements
Operators in c++ programming types of variables
C programming session 02
2.overview of c#
btwggggggggggggggggggggggggggggggisop correct (1).pptx
OOPJ_PPT2,JAVA OPERATORS TPYE WITH EXAMPLES.pptx
Programming presentation
Module 2_PPT_P1 POP Notes module 2 fdfd.pdf
ppt on logical/arthimatical/conditional operators
Report on c
6 operators-in-c
Operators in Python Arithmetic Operators
C++ notes.pdf BASIC C++ NOTES FOR BEGGINERS
Operators in C++.pptx
Lecture 2
Python Unit 3 - Control Flow and Functions
ICP - Lecture 5
C Sharp Jn (2)

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Tartificialntelligence_presentation.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
A Presentation on Artificial Intelligence
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Mushroom cultivation and it's methods.pdf
PPTX
TLE Review Electricity (Electricity).pptx
Teaching material agriculture food technology
Reach Out and Touch Someone: Haptics and Empathic Computing
A comparative study of natural language inference in Swahili using monolingua...
Tartificialntelligence_presentation.pptx
A comparative analysis of optical character recognition models for extracting...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Unlocking AI with Model Context Protocol (MCP)
Diabetes mellitus diagnosis method based random forest with bat algorithm
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology
Per capita expenditure prediction using model stacking based on satellite ima...
cloud_computing_Infrastucture_as_cloud_p
Advanced methodologies resolving dimensionality complications for autism neur...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
A Presentation on Artificial Intelligence
Agricultural_Statistics_at_a_Glance_2022_0.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Mushroom cultivation and it's methods.pdf
TLE Review Electricity (Electricity).pptx

03. operators and-expressions

  • 1. Operators and Expressions Performing Simple Calculations with C# Svetlin Nakov Telerik Corporation www.telerik.com
  • 2. Table of Contents 1. Operators in C# and Operator Precedence 2. Arithmetic Operators 3. Logical Operators 4. Bitwise Operators 5. Comparison Operators 6. Assignment Operators 7. Other Operators 8. Implicit and ExplicitType Conversions 9. Expressions 2
  • 3. Operators in C# Arithmetic, Logical, Comparison, Assignment, Etc.
  • 4. What is an Operator?  Operator is an operation performed over data at runtime  Takes one or more arguments (operands)  Produces a new value  Operators have precedence  Precedence defines which will be evaluated first  Expressions are sequences of operators and operands that are evaluated to a single value 4
  • 5. Operators in C#  Operators in C# :  Unary – take one operand  Binary – take two operands  Ternary (?:) – takes three operands  Except for the assignment operators, all binary operators are left-associative  The assignment operators and the conditional operator (?:) are right-associative 5
  • 6. Categories of Operators in C# Category Operators Arithmetic + - * / % ++ -- Logical && || ^ ! Binary & | ^ ~ << >> Comparison == != < > <= >= Assignment = += -= *= /= %= &= |= ^= <<= >>= String concatenation + Type conversion is as typeof Other . [] () ?: new 6
  • 8. Operators Precedence Precedence Operators Highest () ++ -- (postfix) new typeof ++ -- (prefix) + - (unary) ! ~ * / % + - << >> < > <= >= is as == != & Lower ^ 8
  • 9. Operators Precedence (2) Precedence Operators Higher | && || ?: Lowest = *= /= %= += -= <<= >>= &= ^= |= 9  Parenthesis operator always has highest precedence  Note: prefer using parentheses, even when it seems stupid to do so
  • 11. Arithmetic Operators  Arithmetic operators +, -, * are the same as in math  Division operator / if used on integers returns integer (without rounding) or exception  Division operator / if used on real numbers returns real number or Infinity or NaN  Remainder operator % returns the remainder from division of integers  The special addition operator ++ increments a variable 11
  • 12. Arithmetic Operators – Example 12 int squarePerimeter = 17; double squareSide = squarePerimeter / 4.0; double squareArea = squareSide * squareSide; Console.WriteLine(squareSide); // 4.25 Console.WriteLine(squareArea); // 18.0625 int a = 5; int b = 4; Console.WriteLine( a + b ); // 9 Console.WriteLine( a + b++ ); // 9 Console.WriteLine( a + b ); // 10 Console.WriteLine( a + (++b) ); // 11 Console.WriteLine( a + b ); // 11 Console.WriteLine(12 / 3); // 4 Console.WriteLine(11 / 3); // 3
  • 13. Arithmetic Operators – Example (2) 13 Console.WriteLine(11.0 / 3); // 3.666666667 Console.WriteLine(11 / 3.0); // 3.666666667 Console.WriteLine(11 % 3); // 2 Console.WriteLine(11 % -3); // 2 Console.WriteLine(-11 % 3); // -2 Console.WriteLine(1.5 / 0.0); // Infinity Console.WriteLine(-1.5 / 0.0); // -Infinity Console.WriteLine(0.0 / 0.0); // NaN int x = 0; Console.WriteLine(5 / x); // DivideByZeroException
  • 14. Arithmetic Operators – Overflow Examples 14 int bigNum = 2000000000; int bigSum = 2 * bigNum; // Integer overflow! Console.WriteLine(bigSum); // -294967296 bigNum = Int32.MaxValue; bigNum = bigNum + 1; Console.WriteLine(bigNum); // -2147483648 checked { // This will cause OverflowException bigSum = bigNum * 2; }
  • 17. Logical Operators  Logical operators take boolean operands and return boolean result  Operator ! turns true to false and false to true  Behavior of the operators &&, || and ^ (1 == true, 0 == false) : 17 Operation || || || || && && && && ^ ^ ^ ^ Operand1 0 0 1 1 0 0 1 1 0 0 1 1 Operand2 0 1 0 1 0 1 0 1 0 1 0 1 Result 0 1 1 1 0 0 0 1 0 1 1 0
  • 18. Logical Operators – Example  Using the logical operators: 18 bool a = true; bool b = false; Console.WriteLine(a && b); // False Console.WriteLine(a || b); // True Console.WriteLine(a ^ b); // True Console.WriteLine(!b); // True Console.WriteLine(b || true); // True Console.WriteLine(b && true); // False Console.WriteLine(a || true); // True Console.WriteLine(a && true); // True Console.WriteLine(!a); // False Console.WriteLine((5>7) ^ (a==b)); // False
  • 21. Bitwise Operators  Bitwise operator ~ turns all 0 to 1 and all 1 to 0  Like ! for boolean expressions but bit by bit  The operators |, & and ^ behave like ||, && and ^ for boolean expressions but bit by bit  The << and >> move the bits (left or right)  Behavior of the operators|, & and ^: 21 Operation | | | | & & & & ^ ^ ^ ^ Operand1 0 0 1 1 0 0 1 1 0 0 1 1 Operand2 0 1 0 1 0 1 0 1 0 1 0 1 Result 0 1 1 1 0 0 0 1 0 1 1 0
  • 22. Bitwise Operators (2)  Bitwise operators are used on integer numbers (byte, sbyte, int, uint, long, ulong)  Bitwise operators are applied bit by bit  Examples: 22 ushort a = 3; // 00000000 00000011 ushort b = 5; // 00000000 00000101 Console.WriteLine( a | b); // 00000000 00000111 Console.WriteLine( a & b); // 00000000 00000001 Console.WriteLine( a ^ b); // 00000000 00000110 Console.WriteLine(~a & b); // 00000000 00000100 Console.WriteLine( a << 1); // 00000000 00000110 Console.WriteLine( a >> 1); // 00000000 00000001
  • 23. Bitwise Operators –Tips &Tricks  How to get the bit at position p in a number n?  How to set the bit at position p to 0? 23 int p = 5; int n = 35; // 00000000 00100011 int mask = 1 << p; // 00000000 00100000 int nAndMask = n & mask; // 00000000 00100000 int bit = nAndMask >> p; // 00000000 00000001 Console.WriteLine(bit); // 1 int p = 5; int n = 35; // 00000000 00100011 int mask = ~(1 << p); // 11111111 11011111 int result = n & mask; // 00000000 00000011 Console.WriteLine(result); // 3
  • 24. Bitwise Operators – Tips &Tricks (2)  How to set the bit at position p to 1?  How to print a binary number to the console? 24 int p = 4; int n = 35; // 00000000 00100011 int mask = 1 << p; // 00000000 00010000 int result = n | mask; // 00000000 00110011 Console.WriteLine(result); // 3 Console.WriteLine( Convert.ToString(result, 2).PadLeft(32, '0')); // 00000000000000000000000000110011
  • 27. Comparison Operators  Comparison operators are used to compare variables  ==, <, >, >=, <=, !=  Comparison operators example: 27 int a = 5; int b = 4; Console.WriteLine(a >= b); // True Console.WriteLine(a != b); // True Console.WriteLine(a == b); // False Console.WriteLine(a == a); // True Console.WriteLine(a != ++b); // False Console.WriteLine(a > b); // False
  • 28. Assignment Operators  Assignment operators are used to assign a value to a variable ,  =, +=, -=, |=, ...  Assignment operators example: 28 int x = 6; int y = 4; Console.WriteLine(y *= 2); // 8 int z = y = 3; // y=3 and z=3 Console.WriteLine(z); // 3 Console.WriteLine(x |= 1); // 7 Console.WriteLine(x += 3); // 10 Console.WriteLine(x /= 2); // 5
  • 31. Other Operators  String concatenation operator + is used to concatenate strings  If the second operand is not a string, it is converted to string automatically 31 string first = "First"; string second = "Second"; Console.WriteLine(first + second); // FirstSecond string output = "The number is : "; int number = 5; Console.WriteLine(output + number); // The number is : 5
  • 32. Other Operators (2)  Member access operator . is used to access object members  Square brackets [] are used with arrays indexers and attributes  Parentheses ( ) are used to override the default operator precedence  Class cast operator (type) is used to cast one compatible type to another 32
  • 33. Other Operators (3)  Conditional operator ?: has the form (if b is true then the result is x else the result is y)  The new operator is used to create new objects  The typeof operator returns System.Type object (the reflection of a type)  The is operator checks if an object is compatible with given type 33 b ? x : y
  • 34. Other Operators  Null-coalescing operator ?? is used to define a default value for both nullable value types and reference types  It returns the left-hand operand if it is not null  Otherwise it returns the right operand 34 int? x = null; int y = x ?? -1; int? x = 1; int y = x ?? -1; Here the value of y is -1 Here the value of y is 1
  • 35. Other Operators – Example  Using some other operators: 35 int a = 6; int b = 4; Console.WriteLine(a > b ? "a>b" : "b>=a"); // a>b Console.WriteLine((long) a); // 6 int c = b = 3; // b=3; followed by c=3; Console.WriteLine(c); // 3 Console.WriteLine(a is int); // True Console.WriteLine((a+b)/2); // 4 Console.WriteLine(typeof(int)); // System.Int32 int d = new int(); Console.WriteLine(d); // 0
  • 38. ImplicitType Conversion  Implicit type conversion  Automatic conversion of value of one data type to value of another data type  Allowed when no loss of data is possible  "Larger" types can implicitly take values of smaller "types"  Example: 38 int i = 5; long l = i;
  • 39. ExplicitType Conversion  Explicit type conversion  Manual conversion of a value of one data type to a value of another data type  Allowed only explicitly by (type) operator  Required when there is a possibility of loss of data or precision  Example: 39 long l = 5; int i = (int) l;
  • 40. Type Conversions – Example  Example of implicit and explicit conversions:  Note: Explicit conversion may be used even if not required by the compiler 40 float heightInMeters = 1.74f; // Explicit conversion double maxHeight = heightInMeters; // Implicit double minHeight = (double) heightInMeters; // Explicit float actualHeight = (float) maxHeight; // Explicit float maxHeightFloat = maxHeight; // Compilation error!
  • 43. Expressions  Expressions are sequences of operators, literals and variables that are evaluated to some value  Examples: 43 int r = (150-20) / 2 + 5; // r=70 // Expression for calculation of circle area double surface = Math.PI * r * r; // Expression for calculation of circle perimeter double perimeter = 2 * Math.PI * r;
  • 44. Expressions (2)  Expressions has:  Type (integer, real, boolean, ...)  Value  Examples: 44 int a = 2 + 3; // a = 5 int b = (a+3) * (a-4) + (2*a + 7) / 4; // b = 12 bool greater = (a > b) || ((a == 0) && (b == 0)); Expression of type int. Calculated at compile time. Expression of type int. Calculated at runtime. Expression of type bool. Calculated at runtime.
  • 46. Summary  We discussed the operators in C#:  Arithmetic, logical, bitwise, comparison, assignment and others  Bitwise calculations  Operator precedence  We learned when to use implicit and explicit type conversions  We learned how to use expressions 46
  • 47. Resources  Boolean algebra (logic)  http://en.wikipedia.org/wiki/Boolean_algebra_ %28logic%29  Bitwise mask  http://en.wikipedia.org/wiki/Mask_%28computi ng%29  Bitwise operation  http://en.wikipedia.org/wiki/Bitwise_operation  BitTwiddling Hacks  graphics.stanford.edu/~seander/bithacks.html 47
  • 49. Exercises 1. Write an expression that checks if given integer is odd or even. 2. Write a boolean expression that checks for given integer if it can be divided (without remainder) by 7 and 5 in the same time. 3. Write an expression that calculates rectangle’s area by given width and height. 4. Write an expression that checks for given integer if its third digit (right-to-left) is 7. E. g. 1732  true. 5. Write a boolean expression for finding if the bit 3 (counting from 0) of a given integer is 1 or 0. 6. Write an expression that checks if given point (x, y) is within a circle K(O, 5). 49
  • 50. Exercises (2) 7. Write an expression that checks if given positive integer number n (n ≤ 100) is prime. E.g. 37 is prime. 8. Write an expression that calculates trapezoid's area by given sides a and b and height h. 9. Write an expression that checks for given point (x, y) if it is within the circle K( (1,1), 3) and out of the rectangle R(top=1, left=-1, width=6, height=2). 10. Write a boolean expression that returns if the bit at position p (counting from 0) in a given integer number v has value of 1. Example: v=5; p=1  false. 50
  • 51. Exercises (3) 11. Write an expression that extracts from a given integer i the value of a given bit number b. Example: i=5; b=2  value=1. 12. We are given integer number n, value v (v=0 or 1) and a position p.Write a sequence of operators that modifies n to hold the value v at the position p from the binary representation of n. Example: n = 5 (00000101), p=3, v=1  13 (00001101) n = 5 (00000101), p=2, v=0  1 (00000001) 51
  • 52. Exercises (4) 13. Write a program that exchanges bits 3, 4 and 5 with bits 24, 25 and 26 of given 32-bit unsigned integer. 14. *Write a program that exchanges bits {p, p+1, …, p+k-1) with bits {q, q+1, …, q+k-1} of given 32-bit unsigned integer. 52