Results 1 to 3 of 3

Thread: มีคำถามเกี่ยวกับ programming มาให้เล่นกัน

  1. #1


    คำถามเกี่ยวกับ Comparison Operator กับ Bitwise Operator ^^
    && กับ &
    || กับ | [/b]
    รู้ไม๊ว่า ต่างกันตรงไหน

    Code:
    1. bool result1 = a && b;
    2. bool result2 = a & b;
    คำตอบออกมา result1 = result2 ตลอด แต่ถามว่า มันต่างกันตรงไหน

    อืม น่าคิดดี เพราะถ้ามันเหมือนกันทุกประการ แล้วเขาจะมีไว้ 2 แบบ ทำไมเนอะ

    คำตอบ ขอ hide ไว้หน่อยนึง เด๋วมีการแอบดูเฉลยก่อน ^^'

    [hide=1]
    ต่างกันที่กระบวนการทำงาน
    Comparison Operator จะทำงานแบบ Shot Circuit ผิดกับ Bitwise Operator
    ยกตัวอย่างดีกว่า
    กรณีของ Comparison Operator เช่น &&
    Code:
    bool result1 = FALSE && a;
    bool result2 = FALSE & a;
    สิ่งที่เกิดขึ้นคือ เมื่อ compiler ทำงานถึง FALSE แล้วตามด้วยการเจอ Comparison Operator && จะทำการสรุปทันทีว่า result1 = FALSE (FALSE and กับอะไรก็ได้ FALSE เสมอ) โดยไม่สนใจ a อีกต่อไป ผิด กับ Bitwise Operator ที่จะได้ค่า result2 มาจากการ and กันจริงๆ ของ ตัวแปร

    เอาละคราวนี้ ก็คงสงสัยว่า มันก็ถูกแล้วนี่ คำตอบตรงก็ดีแล้ว short circuit ก็ไวดีนี่ ไม่ต้องสนใจประโยคหลังจาก Comparison Operator ถ้า short circuit <<< แต่นี่แหละ จุดเริ่มต้นของปัญหา

    พิจารณา
    [code]bool takeSomething()
    {

  2. #2


    ตอบให้ละกัน

    & เปน BitWise operator
    เปนการเช็กที่ จำนวน &#39;bit&#39; (จิงๆ แล้วนิยมใช้ใน radix 2 (เลขฐาน 2))
    โดยเปรียบเทียบเปน ถ้ามี bitตำแหน่งนั้น จะ 0 หรือ 1 ก้ถือเปน 1 (เช่น 7 มี จำนวน 3bit (111) )

    จากที่เจ้าของกระทุ้เขียนนะ
    1. bool result1 = a && b;
    2. bool result2 = a & b;
    ถ้าสมมุต a และ b เปน
    1 & 1
    ผลก้จะออกมาเหมือนกัน เพราะว่า
    & ความยาว bit เท่ากัน คือ 1bit และ 1 bit (true)
    && เลข 1 & 1 ก้ได้ 1(true)

    เอาละ อยากเหนความแตกต่างชิมิ
    ลองเปน
    3 & 4
    ผลจะออกมาต่างกันละ เพราะว่า
    & ความยาว bit ไม่เท่าคือ เลข3 = 2bits(11) และ เลข4 = 3bits(100) // ใครไม่เข้าใจ bit ก้ เอ่อ -*-
    && เลข 3 & 4 ก้ถือเปน 1(true)


  3. #3
    Junior Member
    Join Date
    Oct 2007
    Posts
    5


    คห. ข้างบนมาตอบซะแล้ว
    และเราคิดว่าถูกด้วย

    && เป็นการ AND กันของข้อมู

    ส่วน & เป็นการเช็คจำนวนบิต

    ทั้งสองวิธี ถ้าคิดเองก็เปลี่ยนเป็นแบบ เลขฐานสองก่อนถึงจะคิดได้

Similar Threads

  1. Replies: 10
    Last Post: 13-11-2009, 12:54 PM
  2. PLC Programming
    By nirunp in forum แนะความรู้ด้าน Programming ต่างๆ
    Replies: 0
    Last Post: 05-04-2008, 06:18 PM
  3. Programming C# 3.0
    By SheLLniX in forum E-Book, Video หรือบทความทั่วไปด้าน Computer
    Replies: 0
    Last Post: 11-02-2008, 02:04 PM
  4. Web Programming with PHP 5
    By conanjung in forum PHP,ASP,Javascript, Html
    Replies: 0
    Last Post: 21-09-2007, 11:58 AM
  5. CGI Programming
    By takaru in forum E-Book, Video หรือบทความทั่วไปด้าน Computer
    Replies: 0
    Last Post: 22-08-2007, 09:18 PM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •