Thursday, April 23, 2015

Lesson 05

ඉතින් යාලුවනේ කොහොමද ඈත ඔන්න එහෙනම් මම අලුත් ජාවා පාඩමක් අරගෙන අවා අද ඉතින් අපිට කරන්න තියෙන්නේ අපි කලින් පාඩමේදී කරපු operators වල ඉතුරු ටික එහෙනම් ඉතින් දැන් වැඩ පටන් ගමු කට හැර අපි කරපු පරණ operators පාඩම බලන්න බැරි උන නම් මෙන්න තියනවා ලින්කුව ගිහින් හොදට බලන්න මේවා අපිට ඉස්සරහට ගොඩක් ඕනේ වෙනවා



එහෙනම් ඉතින් අපිට අද බලන්න තියෙනෙනේ Bitwise Operators ගැන අපිට Bitwise Operators ගත්තහම වර්ග කීපයක් තියනවා අපි බලමු ඒ මොනවද කියල.




එහෙනම් ඉතින් වැඩ පටන් ගමු. මුලින් ම බලමු Binary AND Operator එක ගැන,

මෙකෙදි වෙන්නේ අපි හිතන්න අපි a, b කියල variable දෙකක් අරන් තියනවා a ගේ value  එක 5 b ගේ value එක 3 කියල මුලින් ම අපි program එක run කරහම වෙන්නේ මේ values ඔක්කොම binary වලට convert වෙනවා ඒ කියන්නේ a = 0000 0101   b = 0000 0011
ඊට පස්සේ ඉතින් කරන්නේ and operator එකේ වැඩේ ඔයාලට පොඩිකාලේ truth table ගහල කරේ bitwise and operator එකේදී වෙන්නේ අගයන් දෙකම true වෙනවනම් result එක true කියන එකයි 


a = 0000 0101
b = 0000 0011

ඒ කියන්නේ මෙතන අගයන් දෙකම true උනහම අපිට ලැබෙන්නේ
0000 0001 කියන result එක ඒ කියන්නේ මේක decimal වලට convert කරහම අපිට එන්නේ 1 කියන අගය

එහෙනම් ඉතින් අපි දැන් බලමු Binary OR Operator ගැන,
මේකෙදි වෙන්නෙත් කලින් උනා වගේම තමයි මුලින් ම binary වලට convert වෙනවා ඊට පස්සේ bitwise OR operator එක ඒ කියන්නේ values දෙකම false නම් result එක  false අනිත් හැම අවස්ථාවේදීම  true කියන එකයි.


එහෙනම් ඉතින් අපි දැන් බලමු Binary XOR Operator ගැන,
 මේකෙදි වෙන්නේඅගයන් දෙකෙන් එකක් හරි true උනොත් result එක true දෙකම true උනොත් හරි දෙකම false උනොත් හරි result එක false.

දැන් අපි බලමු Binary Ones Complement Operator එක ගැන,
මේක හරිම සරලයි මේකෙදි මෙන්න මේ operation එක තමයි වෙන්නේ -(x+1) හිතන්න අපි  20 දුන්න කියල අපිට result එක එන්නේ -(20+1) ඒ කියන්නේ -21 කියල ඉතා සරලයි හික් හික් .... :D



ඊලගට තියෙන්නේ අපිට Binary Left Shift Operator එක ගැන, මේකෙදි කරන්නේ වම් පැත්තේ operand එකේ තියන සියලුම bits දකුණු පැත්තේ තියන operand එකේ සදහන් ප්‍රමාණයෙන් වමට shift කරන එකයි




බලන්න මේ අපි අරගෙන තියෙන්නේ 7 කියන සංඛ්‍යාව මේක එකකින් 
Left Shift කරහම වෙන දේ තමයි ඔය කරලා පෙන්නලා තියෙන්නේ අගට 0 add වෙනවා. මේක හොයාගන්න ලේසි විදියකුත් තියනවා ඒ තමයි අපි එකකින් shift කරොත් අපි shift කරන සංඛ්‍යාව දෙකෙන් වැඩි කරහම අපිට එන්නේ ඒ answer එක තමයි ඒ වගේම 2 කින් shift කරනවානම් 4 ගුණ කරනවා 3 කින් shift කරනවානම් 8න් ගුණ කරනවා ඔය වගේ යනවා



ඊලගට තියෙන්නේ අපිට Binary Right Shift Operator එක ගැන, මේකෙදි කරන්නේ දකුණු පැත්තේ operand එකේ තියන සියලුම bits වම් පැත්තේ තියන operand එකේ සදහන් ප්‍රමාණයෙන් දකුණට shift කරන එකයි.


 ඊලගට අපිට තියෙන්නේ Shift right zero fill operator එක ගැන,
මේකත් Binary Right Shift Operator එක වගේම තමයි වෙනසකට තියෙන්නේ සංඛ්‍යාවේ ධන සෘණ අදුරගන්න තියන bit එකත් shift වෙන්වා. එක නිසා මේ operator එක use කරනකොට සංඛ්‍යාවේ ලකුණ වෙනස් වෙන්න පුළුවන්.

එහෙනම් ඉතින් මේ ඔක්කොම ටික දාල මම ඔයාලට example එකක් කරන්නම් එතකොට මේ ඔක්කොම හොදට තේරුම් ගන්න පුලුවන්

එහෙනම් ඉතින් notepad එක අරගෙන කොටන එකයි තියෙන්නේමේ code කෑල්ල 





public class BitwiseOperators {

    public static void main(String args[]) {

        int a = 35;         /* 35 = 0010 0011 */
        
        int b = 23;         /* 23 = 0001 0111 */
        
        int c = 0;

        c = a & b;             /* 3 = 0000 0011 */
        
        System.out.println("a & b = " + c);

        c = a | b;            /* 55 = 0011 0111 */
        
        System.out.println("a | b = " + c);

        c = a ^ b;             /* 52 = 0011 0100 */
        
        System.out.println("a ^ b = " + c);

        c = ~a;             /*-36 = 1101 1011 */
        
        System.out.println("~a = " + c);

        c = a << 2;             /* 140 = 1000 1100 */
        
        System.out.println("a << 2 = " + c);

        c = a >> 2;         /* 8 = 1000 */
        
        System.out.println("a >> 2  = " + c);

        c = a >>> 2;         /* 8 = 0000 1000 */
        
        System.out.println("a >>> 2 = " + c);
        
    }

}





Compile Command :- javac BitwiseOperators.java
Run Command :- java BitwiseOperators
Result,



a & b = 3
a | b = 55
a ^ b = 52
~a = -36
a << 2 = 140
a >> 2  = 8
a >>> 2 = 8


ඊටපස්සේ අපි බලමු Logical Operators ගැන දැන් ඉතින් මේකේ කතා කරන්න දෙයක් නෑ මේ ටිකම අපි කරා 
මේකෙදි අපිට තියෙන්නේ,

  • Logical  AND
  • Logical  OR
  • Logical  NOT


Logical  AND එකේදී වෙන්නේ අපි කලින් කරා වගේම තමයි දෙකම true  නම් output එක true

Logical  OR එකේදී වෙන්නේ දෙකෙන් එකක් true නම් condition එක true වෙනවා මේකේ විශේෂත්වය තමයි  binary එකේ වගේ operands දෙකම check කරන්නේ නෑ පලවෙනි එක true නම් condition එක true වෙනවා

Logical  NOT එකේදී වෙන්නේ Logical  AND එකේ අනිත් පැත්ත ඒ කියන්නේ දෙකම true  නම් output එක true එකේ not එක ඒ කියන්නේ false කියන එක

අපි මේ උදාහරණය කරලම බලමු එහෙනම්,



public class LogicalOperators {

    public static void main(String args[]) {

        boolean a = true;
        
        boolean b = false;

        System.out.println("a && b = " + (a && b));

        System.out.println("a || b = " + (a || b));

        System.out.println("!(a && b) = " + !(a && b));
    }

}






Compile Command :- javac LogicalOperators.java
Run Command :- java LogicalOperators
Result,

a && b = false
a || b = true
!(a && b) = true


කොහොමද  එළකිරි එකට වැඩ නේද එහෙනම් ඉතින් දැන් යන්න වෙලාව හරි අයෙත් තවත් operators පාඩමකුත් අරගෙන ඉක්මනටම එන්නම් එතකන් මේක කරලා හොදට පුරුදු වෙන්නකෝ එහෙනම් ඉතින් මම ගියා හැමෝටම ජය වේවා!!!!












No comments: