Thursday, August 30, 2012

Java Operators ( 4 ‍ව‍න ‍කො‍ට‍ස )


Java  Operators ( 4 ‍ව‍න ‍කො‍ට‍ස )

අපි අද කතා කරන්න යන්නෙ java වල එන bitwise operators ගැන.

operator
meaning
&
Bitiwise AND
|
Bitwise  OR
^
Bitwise XOR
>> 
Right shift
<< 
Left shift
>>> 
Zero fill right shift
~
Bitwise compliment

මෙම operators  ගැන වැඩි දුර කතා කිරීමට පෙර decimal සංඛයාවක්(10 පාදයේ සංඛයාවක්)  binary  සංඛයාවක්(2 පාදයේ සංඛයාවක් )  කරන අකාරය සලකා බලමු. සදහා අදාල decimal  සංඛයාව ලබ්දියවන තෙක්  දිගටම 2න් බෙදා ගෙන යන්න.  අවසානයේ අග සිට මුලට ශේෂයන් ලබා ගන්න. එවිට අදාල binary  සංඛයාව ලැබේ.

Ex:  27 binary  සංඛයාවක් කරන ආකරය බලමු.


                          ලබ්දිය                    ශේෂය
27/2                      13                         1
13/2                      6                           1                
6/2                        3                           0
3/2                        1                           1
1/2                        0                           1             
(ලබ්දිය 0 වන තෙක් බෙදා පහල සිට ඉහලට ශේශයන් ලබා ගන්න.එවිට 27 ට අදාල binary  සංඛයාව 11011  ලෙස  ලැබේ.  )

Bitiwise AND(&)  භාවිතය :
Input1
Input2
Output (input1  &   input2 )
1
1
1
1
0
0
0
1
0
0
0
0


මම මෙය උදාහරනයක් මගින් පැහැදිලි කරන්නම්.
4 & 5   සලකමු.  මෙහිදී 4 සහ 5  binary  සංඛයා බවට පරිවර්තනය කොට ගෙන එම සංඛයා වලට  &  operator එක යෙදිම සිදුවේ.
4  binary වලින් ලියූ විට                          1    0        0
5  binary වලින් ලියූ විට                          1    0        1
දැන්       100    &  101 සිදුවී පිලිතුර ලෙස 100 ලැබේ.. මෙය සිදු වන ආකරය පහත දැක්වේ.
         
          1                      &                         1             =       1
          0                      &                         0             =       0
          0                      &                         1             =       0
                                 

එනම් 4&5=4  ලෙස ලැබේ.

Bitiwise  OR(|)  භාවිතය :
Input1
Input2
Output (input1  |   input2 )
1
1
1
1
0
1
0
1
1
0
0
0


මම මෙය උදාහරනයක් මගින් පැහැදිලි කරන්නම්.
4 | 5   සලකමු.  මෙහිදී 4 සහ 5  binary  සංඛයා බවට පරිවර්තනය කොට ගෙන එම සංඛයා වලට  |  operator එක යෙදිම සිදුවේ.
4  binary වලින් ලියූ විට                          1    0        0
5  binary වලින් ලියූ විට                          1    0        1
දැන්       100   |  101 සිදුවී පිලිතුර ලෙස 101 ලැබේ.. මෙය සිදු වන ආකරය පහත දැක්වේ.
         
          1                      |                           1             =       1
          0                      |                           0             =       0
          0                      |                           1             =       1
                                                                   

එනම් 4|5=5 ලෙස ලැබේ.





Bitiwise  X OR(^)  භාවිතය :
Input1
Input2
Output (input1  ^  input2 )
1
1
0
1
0
1
0
1
1
0
0
0


මම මෙය උදාහරනයක් මගින් පැහැදිලි කරන්නම්.
4 ^ 5   සලකමු.  මෙහිදී 4 සහ 5  binary  සංඛයා බවට පරිවර්තනය කොට ගෙන එම සංඛයා වලට  ^  operator එක යෙදිම සිදුවේ.
4  binary වලින් ලියූ විට                          1    0        0
5  binary වලින් ලියූ විට                          1    0        1
දැන්       100    ^  101 සිදුවී පිලිතුර ලෙස 001 ලැබේ.. මෙය සිදු වන ආකරය පහත දැක්වේ.
         
          1                      |                           1             =       0
          0                      |                           0             =       0
          0                      |                           1             =       1
                                                                   

එනම් 4 ^5=1 ලෙස ලැබේ.





Left  shift(<<)
Int b=5;
b <<2 සලකමු.මෙහිදි 5   binary වලට හරවා ගෙන එය ස්ථාන 2 කින්  වමට තල්ලු (shift)කරයි. මෙහිදී  දකුනු පස ඇති වන  හිස් ස්ථාන 0 සංකේතයෙන් පුරවනු ලබයි.
5  binary වලින් ලියූ විට                         00000000000000000000000000000101
(මෙහිදී 5 int එකක් ලෙස සලක ඇති නිසා binary සංඛයාව ඉලක්කම් 32 කින් ලියා ඇත.)
5<<2                                                   00000000000000000000000000010100

එනම් 5<<2= 20 ලෙස ලැබේ.

Right   shift(>>)
Int b=5;
b>>2 සලකමු.මෙහිදි 5   binary වලට හරවා ගෙන එය ස්ථාන 2 කින්   දකුනට තල්ලු (shift)කරයි. මෙහිදී  වම් පස ඇති වන  හිස් ස්ථාන 0 සංකේතයෙන් පුරවනු ලබයි.
5  binary වලින් ලියූ විට                        00000000000000000000000000000101
(මෙහිදී 5 int එකක් ලෙස සලක ඇති නිසා binary සංඛයාව ඉලක්කම් 32 කින් ලියා ඇත.)
5>>2                                                   00000000000000000000000000000001

එනම් 5>>2= 1ලෙස ලැබේ.

Zero fill right shift(>>>)
ඔබ -  සංඛයාවක් right shift කරයි  නම් මෙම  සංකේතය(>>>) භාවිතා කල යුතුයි. එනම් -5 ස්ථාන 2 කින්  right shift කල යුතු නම් -5>>>2  ලෙස දැක් විය යුතුය.


Bitwise compliment(~)

යම්  binary සංඛයාවක  ඇති  0 ද්වීමය 1 කිරීමටත් 1 ද්වීමය 0 කිරීමටත්   ~  operator  එක යොදා ගනී.

   a=17=10001
~a=01110

අපි මෙතෙක් උගත් operators ගැන වැඩිදුර තහවුරු කර ගැනීමට  පහත  programme  එක  run කර බලන්න.



public class BitWiseOperators{
 public static void main(String args[]){
  int a=4 ,b=5 ,c=-5;
  int d=a&b;
  int  e=a|b;
  int  f=a^b;
  int  g= a<<2;
  int h=a>>2;
  int i=c>>>2;
  int j=~a;
  System.out.println("4 & 5   ="+d );
  System.out.println("4 | 5   ="+e );
  System.out.println("4 ^ 5   ="+f );
  System.out.println("4 << 2  ="+ g );
  System.out.println("4 >> 2  ="+ h );
  System.out.println("-5>>> 2 ="+i);
  System.out.println("~4      ="+ j);
 }
}


මෙහි output එක :


ලගදිම තවත්  පඩමකින් හමුවෙමු…………














                            

Saturday, August 25, 2012

ජාවා operators(පලමු කොටස)


ජාවා වල එන operators පහත පරිදි අපිට බෙදා දක්වන්න පුලුවන්.
1.       ARITHMATIC OPERATORS
2.       RELATIONAL OPERATORS
3.       LOGICAL OPERATORS
4.       BITWISE OPERATORS
5.       CONDITIONAL OPERATORS


මෙහිදී මම ARITHMATIC OPERATORS(+,-,/,*,%,++,--,) පිලිබදව වැඩි විස්තර කතාකරන අතර ඉදිරියේදි අනෙකුත්  OPERATORS පිලිබදව කත කරමු.
මුලින්ම  (+ , - , * , / , %)  operators පිලිබදව කතා කරමු. මේවා භාවිතා කොට අප එදිනෙදා සිදු කරන ගණිත කර්ම සිදු කල හැක.පහත  program එක මගින් මෙම operators ගැන  අවබෝද කර ගත හැක.

ඉහත program එකෙ  output  එක:

 
ඉහත programඑකෙ // ලෙස සිදු කර ඇත්තේ comment කිරීමකි.මෙය සිදු කොට ඇත්තෙ program එක පිලිබදව පැහැදිලි කිරීම් සිදු කිරීමටයි.මෙම symbol එක(//) සමග java program එකක දක්වන දේවල් program එක compile  වීමෙදි  හා run වීමෙදි නොසලක හරි.
ඉහත  modules  operator (%) එක මගින් සිදු වන්නෙ එක් සංඛයාවක් තවත් සංඛයාවකින් බෙදු විට ශේෂය (ඉතිරි වන අගය ) ලබා දීමයි. 

Increment (++)  හා  decrement(--) operators :

Int  a=10;
Int b=++a;   මෙහිදි a ට ඉදිරියෙන් ++   operator එක   යෙදීම මගින් සිදු වන්නෙ a හි  වත්මන් අගය 1 කින් වැඩි කොට එය bassign කිරීමයි.

Int c=5;
Int d=c++;   මෙහිදි c  ට පසුපසින් ++  operator එක යෙදීම මගින් සිදු වන්නෙ  c හි  වත්මන් අගය d assign කොට ඉන්පසු c හි අගය 1 කින් වැඩි  කර ගැනීමයි.

පහත  program එක මගින් මෙය තව දුරටත් පැහැදිලි වනු ඇති.


ඉහත program එකෙ  output  එක:


 
දැන් බලමු decrement operator(--)  එක ගැන.
Int a=10;
Int b=--a;   මෙහිදී  a ට ඉදිරියෙන් ‘--’  operator එක  යෙදීම මගින් සිදු වන්නේ a හි වත්මන් අගය 1 කින් අඩු කොට එය  b assign කිරීමයි.



Int c=5;
Int d=c--;   මෙහිදි c   ට පසුපසින් ‘--’  operator එක යෙදීම මගින් සිදු වන්නෙ  c හි  වත්මන් අගය d assign කොට ඉන්පසු c හි අගය 1 කින්  අඩු  කර ගැනීමයි.
පහත  program එක මගින් මෙය තව දුරටත් පැහැදිලි වනු ඇති.

ඉහත program එකෙ  output  එක:




දැන් අපි java  arithmetic operators වල තවත් යෙදීමක් ගැන කතාකරමු.

+=   : additional assignment operator
-=    : subtraction assignment operator
*=   : multiplication assignment operator
/=    : division assignment operator
%=   : modules assignment operator

අපි a=a+5; ලෙස java  වලදි ලියන දෙයම a+=5; ලෙස ඉහත assignment operators භාවිත කොට ලිවිය හැක. මෙමගින් java code කෙටි කර ගත හැක. තවද එය අප ලියනු ලබන  java program  එකේ කාර්යක්ශම බව වැඩි වීමටද උපකාරි  වේ. ඉහත operators   භාවිතා කල හැක්කෙ  = ලකුන   දෙපසම එකම variable එකක් තිබෙන විටදී පමනක් බව  මතක තබා ගන්න. එනම් a=b+5; ලෙස තිබුනි නම් ඔබට a+=5; ලෙස ලිවිය නොහැක.
ඉහත operators  පිලිබදව තව දුරටත්  අවබෝද කර  ගැනීමට පහත program  එක run  කර බලන්න.

 
 
ඉහත program එකෙ  output  එක:


 
මම හිතනවා  arithmetic operators ගැන මේ කතා කරපු ටික ප්‍රමනවත් කියලා.java වල එන අනිත් operators  ගැන අපි ඉදිරියෙදි කතා කරමු.මේ කතා කරපු දේවල් ගැන අවුලක් තියනව නම් comment කරන්න.නැත්නම් අපිට email එකක් එවන්න.

By Hasitha Thamaranga