19
บทที5 ตัวดำเนินกำรของโปรแกรม C51 5.1 บทนำ โดยทั่วไปโปรแกรมภาษาซีใช้ตัวดาเนินการเป็นตัวเชื่อมในการเขียนโปรแกรมเพื่อหาผลลัพธ์ทีต้องการ ตัวดาเนินการคือเครื่องหมายกาหนดกรรมวิธีทางคณิตศาสตร์ พีชคณิตบูลีน การเปรียบเทียบ ระหว่างข้อมูลสองตัวซึ่งเรียกว่าตัวถูกดาเนินการ โดยอาจมีค่าเป็นตัวเลข ข้อความ ค่าคงที่หรือตัวแปร ต่างๆ สาหรับตัวดาเนินการของโปรแกรม C51 สามารถแบ่งได้ 3 กลุ่มคือ ตัวดาเนินการทางคณิตศาสตร์ ตัวดาเนินการเปรียบเทียบและลอจิก และตัวดาเนินการทางบิต ในบทนี้ได้นาเสนอตัวดาเนินการ ที่เกี่ยวข้องดังกล่าว 5.2 ตัวดำเนินกำรทำงคณิตศำสตร์ ตัวดาเนินการทางคณิตศาสตร์เป็นตัวเชื่อมในการเขียนโปรแกรมเพื่อหาผลลัพธ์จากการคานวณ ซึ่ง สามารถกระทากับข้อมูลได้หลายแบบ เช่น การบวก การลบ การคูณ การหาร เป็นต้น ตัวดาเนินการ ทางคณิตศาสตร์แสดงในตารางที่ 5.1 ตารางที่ 5.1 ตัวดาเนินการทางคณิตศาสตร์สาหรับโปรแกรม C51 ตัวดำเนินกำร ควำมหมำย + การบวก - การลบ * การคูณ / การหาร % การหารแบบเอาเศษ ++ การเพิ่มค่าขึ้นอีกค่าหนึ่ง -- การลดค่าลงอีกค่าหนึ่ง += การบวกขึ้นอีกด้วยค่าทางขวามือ -= การลดค่าลงอีกค่าด้วยค่าทางขวามือ *= การคูณด้วยค่าทางขวามือ /= การหารด้วยค่าทางขวามือ %= การหารด้วยค่าทางขวามือแบบเอาเศษ ที่มา: ประจิน พลังสันติกุล และชัยวัฒน์ ลิ้มพรจิตรวิไล, 2550, หน้า 162.

ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

บทท 5 ตวด ำเนนกำรของโปรแกรม C51

5.1 บทน ำ

โดยทวไปโปรแกรมภาษาซใชตวด าเนนการเปนตวเชอมในการเขยนโปรแกรมเพอหาผลลพธทตองการ ตวด าเนนการคอเครองหมายก าหนดกรรมวธทางคณตศาสตร พชคณตบลน การเปรยบเทยบ ระหวางขอมลสองตวซงเรยกวาตวถกด าเนนการ โดยอาจมคาเปนตวเลข ขอความ คาคงทหรอตวแปรตางๆ ส าหรบตวด าเนนการของโปรแกรม C51 สามารถแบงได 3 กลมคอ ตวด าเนนการทางคณตศาสตร ตวด าเนนการเปรยบเทยบและลอจก และตวด าเนนการทางบต ในบทนไดน าเสนอตวด าเนนการ ทเกยวของดงกลาว

5.2 ตวด ำเนนกำรทำงคณตศำสตร

ตวด าเนนการทางคณตศาสตรเปนตวเชอมในการเขยนโปรแกรมเพอหาผลลพธจากการค านวณ ซงสามารถกระท ากบขอมลไดหลายแบบ เชน การบวก การลบ การคณ การหาร เปนตน ตวด าเนนการทางคณตศาสตรแสดงในตารางท 5.1

ตารางท 5.1 ตวด าเนนการทางคณตศาสตรส าหรบโปรแกรม C51

ตวด ำเนนกำร ควำมหมำย + การบวก - การลบ * การคณ / การหาร % การหารแบบเอาเศษ ++ การเพมคาขนอกคาหนง -- การลดคาลงอกคาหนง += การบวกขนอกดวยคาทางขวามอ -= การลดคาลงอกคาดวยคาทางขวามอ *= การคณดวยคาทางขวามอ /= การหารดวยคาทางขวามอ %= การหารดวยคาทางขวามอแบบเอาเศษ

ทมา: ประจน พลงสนตกล และชยวฒน ลมพรจตรวไล, 2550, หนา 162.

Page 2: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

84

การท างานของตวด าเนนการทางคณตศาสตร แสดงดงตวอยางท 5.1–5.5 ตวอยำงท 5.1 โปรแกรมการใชงานตวด าเนนการทางคณตศาสตร

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ตวแปร a = 12 บรรทดท 5 ตวแปร b = 12 บรรทดท 6 ตวแปร a บวก 3 แลวน าผลลพธทไดเกบไวท a บรรทดท 7 ตวแปร b ลบ 3 แลวน าผลลพธทไดเกบไวท b

ตวอยำงท 5.2 โปรแกรมการใชงานตวด าเนนการทางคณตศาสตร

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ประกาศตวแปร x, y, z บรรทดท 5 ตวแปร x = 10 บรรทดท 6 ตวแปร y = x/10 เปนการหารทเกบเอาเฉพาะผลลพธเลขจ านวนเตม บรรทดท 7 ตวแปร z = x%3 เปนการเกบเอาเฉพาะผลลพธเลขทเปนเศษของการหาร

Page 3: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

85

ตวอยำงท 5.3 โปรแกรมการใชงานตวด าเนนการทางคณตศาสตร

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ตวแปร a = 5 บรรทดท 5 ตวแปร b = 5 บรรทดท 6 ก าหนดใหคา a บวกกบ 1 แลวน าผลลพธทไดไปเกบไวท a บรรทดท 7 ก าหนดใหคา b ลบกบ 1 แลวน าผลลพธทไดไปเกบไวท b

ตวอยำงท 5.4 โปรแกรมการใชงานตวด าเนนการทางคณตศาสตร

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ตวแปร a = 100 บรรทดท 5 ตวแปร b = 100 บรรทดท 6 ก าหนดใหคา a บวกกบ 10 แลวน าผลลพธทไดไปเกบไวท a บรรทดท 7 ก าหนดใหคา b ลบกบ 10 แลวน าผลลพธทไดไปเกบไวท b

Page 4: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

86

ตวอยำงท 5.5 โปรแกรมการใชงานตวด าเนนการทางคณตศาสตร

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ประกาศตวแปร x, y, z บรรทดท 5 ตวแปร x, y, z มคาเทากนคอ 120 บรรทดท 6 ก าหนดใหคา x คณ 4 แลวน าผลลพธทไดไปเกบไวท x บรรทดท 7 ก าหนดใหคา y หาร 4 แลวน าผลลพธทไดไปเกบไวท y บรรทดท 8 ก าหนดใหคา z หาร 4 แลวเกบเอาเฉพาะผลลพธเลขทเปนเศษของ การหาร

5.3 ตวด ำเนนกำรเปรยบเทยบและลอจกระดบไบต

ตวด าเนนการเปรยบเทยบและลอจกโดยทวไปใชส าหรบการตดสนใจการท างานของโปรแกรม โดยจะใหผลลพธจากการตรวจสอบเปนจรง (True) หรอเปนเทจ (False) เทานน โดยหากเงอนไขเปนจรงจะใหผลลพธเปน 1 และหากเงอนไขเปนเทจจะใหผลลพธเปน 0 การท างานของตวด าเนนการในกลมนแสดงไดดงตารางท 5.2

Page 5: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

87

ตารางท 5.2 ตวด าเนนการเปรยบเทยบและลอจกของขอมลระดบไบต

ตวด ำเนนกำรของ ขอมลระดบไบต

ควำมหมำย

== เทากบ != ไมเทากบ > มากกวา < นอยกวา >= มากกวาหรอเทากบ <= นอยกวาหรอเทากบ ! นอต (NOT)

&& แอนด (AND) || ออร (OR)

ทมา: ประจน พลงสนตกล และชยวฒน ลมพรจตรวไล, 2550, หนา 166.

ส าหรบตวด าเนนการดานลอจกทส าคญและใชส าหรบการตดสนใจการท างานของโปรแกรม ไดแก ตวด าเนนการ NOT, AND และ OR สามารถอธบายการท างานได ดงน

5.3.1 ตวด ำเนนกำร NOT ของขอมลระดบไบต

ผลลพธการกระท าดวยตวด าเนนการ NOT (!) จะไดผลลพธทตรงกนขาม ดงตารางท 5.3

ตารางท 5.3 ผลลพธทไดจากตวด าเนนการ NOT (!) ของขอมลระดบไบต

คำเรมตน ตวด ำเนนกำร NOT ผลลพธทได False ! (False) True True ! (True) False

5.3.2 ตวด ำเนนกำร AND ของขอมลระดบไบต

ผลลพธของการตวด าเนนการ AND จะเปนเทจทนทหากตวถกด าเนนการตวใดตวหนงหรอทงคเปนเทจ แสดงไดดงตารางท 5.4

Page 6: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

88

ตารางท 5.4 ผลลพธทไดจากตวด าเนนการ AND (&&) ของขอมลระดบไบต

คำเรมตน ตวด ำเนนกำร AND

ผลลพธทได ตวแปร 1 ตวแปร 2

False False False && False False False True False && True False True False True && False False True True True && True True

5.3.3 ตวด ำเนนกำร OR ของขอมลระดบไบต

ผลลพธของตวด าเนนการ OR (||) ของขอมลระดบไบตจะเปนจรง หากตวถกด าเนนการตวใดตวหนงหรอทงคเปนจรง แสดงไดดงตารางท 5.5

ตารางท 5.5 ผลลพธทไดจากตวด าเนนการ OR (||) ของขอมลระดบไบต

คำเรมตน ตวด ำเนนกำร OR ผลลพธทได ตวแปร 1 ตวแปร 2

False False False || False False False True False || True True True False True || False True True True True || True True

การท างานของตวด าเนนการเปรยบเทยบและลอจกแสดงดงตวอยางท 5.6 และ 5.7

ตวอยำงท 5.6 โปรแกรมการใชงานตวด าเนนการเปรยบเทยบ

Page 7: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

89

ผลลพธของกำรรนโปรแกรม

บรรทดท 6 ตวแปร a = 10 บรรทดท 7 ตวแปร b = 14 บรรทดท 8 ตวแปร c = 0x0A บรรทดท 9 ตวแปร y1, y2, y3, y4, y5, y6 บรรทดท 10 เงอนไข a มากกวา b เงอนไขเปนจรง (y1 = 1) บรรทดท 11 เงอนไข a มากกวา c เงอนไขเปนเทจ (y2 = 0)

บรรทดท 12 เงอนไข a มากกวาหรอเทากบ c เงอนไขเปนจรงเพราะ 0x0A = 10 (y3= 1)

บรรทดท 13 เงอนไข a เทากบ b เงอนไขเปนเทจ (y4 = 0) บรรทดท 14 เงอนไข a ไมเทากบ b เงอนไขเปนจรง (y5 = 1) บรรทดท 15 เงอนไข a ไมเทากบ c เงอนไขเปนเทจ (y6 = 0)

ตวอยำงท 5.7 โปรแกรมการใชงานตวด าเนนการเปรยบเทยบ

Page 8: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

90

ผลลพธของกำรรนโปรแกรม

บรรทดท 4-6 ตวแปร a = 10, b = 4 และ c = 0x0A บรรทดท 7 ตวแปร y1, y2, y3, y4 บรรทดท 8 เงอนไข (a>b) && (a >= c) เงอนไขเปนจรง (y1 = 1) บรรทดท 9 เงอนไข a != b) && (a >= c) เงอนไขเปนจรง (y2 = 1)

บรรทดท 10 เงอนไข (a != b) || (a >= c) เงอนไขเปนจรง (y3 = 1) บรรทดท 11 เงอนไข (a != b) || ! (a != b) เงอนไขเปนจรง (y4 = 1)

5.4 ตวด ำเนนกำรเชงเปรยบเทยบและเชงลอจกของขอมลระดบบต

ตวด าเนนการทางบตเปนการกระท าทเขาถงขอมลระดบบต โดยทคาขอมลของแตละบตเปนได 2 คาคอ 0 หรอ 1 เทานน ตวด าเนนการทางบตทส าคญแสดงไดดงตารางท 5.6

ตารางท 5.6 การกระท าของตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบต

ตวด ำเนนกำรระดบบต ควำมหมำย ~ กลบคาของบตขอมล & การแอนบต | การออรบต

^ การเอกซคลซฟ-ออรบต << เลอนบตไปทางซาย >> เลอนบตไปทางขวา <<== เลอนบตไปทางซายแลวใหเทากบ >>== เลอนบตไปทางขวาแลวใหเทากบ &= ท าการแอนดแลวใหเทากบ |= ท าการออรแลวใหเทากบ ^= ท าการเอกซคลซฟ-ออรแลวใหเทากบ

ทมา: ประจน พลงสนตกล และชยวฒน ลมพรจตรวไล, 2550, หนา 168.

Page 9: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

91

ส าหรบตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบตทส าคญ สามารถอธบายได ดงน

5.4.1 ตวด ำเนนกำร NOT ของขอมลระดบบต

ผลลพธของการกระท าดวยการกลบคาของบตขอมลจะไดผลลพธทตรงกนขาม แสดงไดดงตารางท 5.7

ตารางท 5.7 ผลลพธของตวด าเนนการ NOT ของขอมลระดบบต

คำเรมตน ตวด ำเนนกำร NOT ผลลพธทได 0 ~ (0) 1 1 ~ (1) 0

5.4.2 ตวด ำเนนกำร AND ของขอมลระดบบต

ผลลพธของการกระท าดวยตวด าเนนการแอนดบตจะเปน 0 หากตวใดตวหนงหรอทงค เปน 0 แสดงไดดงตารางท 5.8

ตารางท 5.8 ผลลพธของตวด าเนนการ AND ของขอมลระดบบต

คำเรมตน ตวด ำเนนกำร AND

ผลลพธทได ตวแปร 1 ตวแปร 2

0 0 0 & 0 0 0 1 0 & 1 0 1 0 1 & 0 0 1 1 1 & 1 1

5.4.3 ตวด ำเนนกำร OR ของขอมลระดบบต

ผลลพธของการกระท าดวยตวด าเนนการออรบตจะเปน 1 หากตวใดตวหนงหรอทงคเปน 1 แสดงไดดงตารางท 5.9

Page 10: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

92

ตารางท 5.9 ผลลพธของตวด าเนนการ OR ของขอมลระดบบต

คำเรมตน ตวด ำเนนกำร OR ผลลพธทได ตวแปร 1 ตวแปร 2

0 0 0 | 0 0 0 1 0 | 1 1 1 0 1 | 0 1 1 1 1 | 1 1

5.4.4 ตวด ำเนนกำรเอกซคลซฟ-ออรของขอมลระดบบต

ผลลพธของการกระท าดวยตวด าเนนการเอกซคลซฟ-ออรบตจะเปน 0 ทนท หาก ตวถกด าเนนการทงคมคาเหมอนกน แสดงไดดงตารางท 5.10

ตารางท 5.10 ตวด าเนนการเอกซคลซฟ-ออรของขอมลระดบบต

คำเรมตน ตวด ำเนนกำร เอกซคลซฟ-ออร

ผลลพธทได ตวแปร 1 ตวแปร 2

0 0 0 ^ 0 0 0 1 0 ^ 1 1 1 0 1 ^ 0 1 1 1 1 ^ 1 0

5.4.5 ตวด ำเนนกำรเลอนบต

ตวด าเนนการนท าหนาทเลอนบตขอมลไปทางซายหรอขวา โดยการเลอนบตจะตองระบจ านวนครงการเลอนดวยวา ตองการใหมการเลอนกครง เชน

a = a << 4; // ใหเลอนบตคาขอมล a ไปทางซาย 4 ครงแลวผลลพธทไดเกบไวท a เหมอนเดม

b = b >> 1; // ใหเลอนบตคาขอมล b ไปทางขวา 1 ครงแลวผลลพธทไดเกบไวท b เหมอนเดม

Page 11: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

93

ตวอยางการท างานของตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบตแสดงดงตวอยางท 5.8–5.11

ตวอยำงท 5.8 โปรแกรมการใชงานตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบต

ผลลพธของกำรรนโปรแกรม

บรรทดท 4 ตวแปร a = 5 บรรทดท 5 ตวแปร b = 7 บรรทดท 6 ตวแปร y1, y2, y3, y4 บรรทดท 7 ด าเนนการกลบคาของบตขอมลตวแปร a แลวน าผลลพธเกบไวทตวแปร y1 บรรทดท 8 ด าเนนการแอนดบตระหวาง a กบ b แลวน าผลลพธเกบไวทตวแปร y2 บรรทดท 9 ด าเนนการเอกซคลซฟ-ออรบตระหวางตวแปร a กบ b แลวน าผลลพธเกบ ไวทตวแปร y3

ตวอยำงท 5.9 โปรแกรมการใชงานตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบต

Page 12: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

94

ผลลพธของกำรรนโปรแกรม

บรรทดท 6 ตวแปร a = 0x9C (0b10011100) บรรทดท 7 ตวแปร b = 0x46 (0b01000110) บรรทดท 8 ตวแปร c = 0 บรรทดท 9 ด าเนนการแอนดบตระหวางตวแปร a กบ c ผลลพธเกบไวทตวแปร y1 บรรทดท 10 ด าเนนการออรบตระหวางตวแปร a กบ ~c ผลลพธเกบไวทตวแปร y2 บรรทดท 11 ด าเนนการแอนดบตระหวางตวแปร a กบ b ผลลพธเกบไวทตวแปร y3 บรรทดท 12 ด าเนนการออรบตระหวางตวแปร a กบ b ผลลพธเกบไวทตวแปร y4 บรรทดท 13 ด าเนนการเอกซคลซฟ-ออรบตระหวางตวแปร a กบ b ผลลพธเกบไวท ตวแปร y5

จากตวอยางท 5.9 สามารถแสดงรายละเอยดการด าเนนการทางบตไดดงตารางท 5.11

ตารางท 5.11 ผลลพธของตวด าเนนการเชงเปรยบเทยบและเชงลอจกของขอมลระดบบต

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a 1 0 0 1 1 1 0 0 0x9C b 0 1 0 0 0 1 1 0 0x46 c - - - - - - - 0 0 ~c - - - - - - - 1 1

y1 = a & c 0 0 0 0 0 0 0 0 0x00 y2 = a | (~c) 1 0 0 1 1 1 0 1 0x9D y3 = a & b 0 0 0 0 0 1 0 0 0x04 y4 = a | b 1 1 0 1 1 1 1 0 0xDE y5 = a ^ b 1 1 0 1 1 0 1 0 0xDA

Page 13: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

95

ตวอยำงท 5.10 โปรแกรมการใชงานตวด าเนนการเลอนขอมล

ผลลพธของกำรรนโปรแกรม

บรรทดท 5 ตวแปร a = 0x01 (0b00000001) บรรทดท 6 ตวแปร a เลอนบตขอมลไปดานซาย 1 ครง ผลลพธเกบไวทตวแปร y1

บรรทดท 7 ตวแปร a เลอนบตขอมลไปดานซาย 2 ครง ผลลพธเกบไวทตวแปร y2 บรรทดท 8 ตวแปร a เลอนบตขอมลไปดานซาย 3 ครง ผลลพธเกบไวทตวแปร y3 บรรทดท 9 ตวแปร a เลอนบตขอมลไปดานซาย 4 ครง ผลลพธเกบไวทตวแปร y4

จากตวอยางท 5.10 สามารถแสดงรายละเอยดการด าเนนการทางบตไดดงตารางท 5.12

ตารางท 5.12 ผลลพธของตวด าเนนการเลอนบต

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a 0 0 0 0 0 0 0 1 0x01 y1 = a << 1 0 0 0 0 0 0 1 0 0x02 y2 = a << 2 0 0 0 0 0 1 0 0 0x04 y3 = a << 3 0 0 0 0 1 0 0 0 0x08 y4 = a << 4 0 0 0 1 0 0 0 0 0x10

Page 14: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

96

ตวอยำงท 5.11 โปรแกรมการใชงานตวด าเนนการทางบต

ผลลพธของกำรรนโปรแกรม

บรรทดท 5 ตวแปร a = b = c = 0xAA (0b10101010) บรรทดท 6 ตวแปร a แอนดบตกบขอมล 0xF0 แลวน าผลลพธเกบไวทตวแปร a

บรรทดท 7 ตวแปร b ออรบตกบขอมล 0xF0 แลวน าผลลพธเกบไวทตวแปร b บรรทดท 8 ตวแปร c เอกซคลซฟ-ออรบตกบขอมล 0xF0 แลวน าผลลพธเกบไวท

ตวแปร c

จากตวอยางท 5.11 สามารถแสดงรายละเอยดการด าเนนการทางบตไดดงตารางท 5.13

ตารางท 5.13 ผลลพธของตวด าเนนการทางบต

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a = b = c 1 0 1 0 1 0 1 0 0xAA 0xF0 1 1 1 1 0 0 0 0 0xF0 0x55 0 1 0 1 0 1 0 1 0x55

a &= 0xF0 1 0 1 0 0 0 0 0 0XA0 b |= 0xF0 1 1 1 1 1 0 1 0 0xFA c ^= 0x55 1 1 1 1 1 1 1 1 0xFF

Page 15: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

97

5.5 กำรใชประโยชนจำกตวด ำเนนกำรทำงลอจกกบขอมลในระดบบต

ในบางครงการเขยนโปรแกรมอาจมความจ าเปนตองตดขอมลทไดบางสวนออกเพอน าผลลพธทไดไปใชประโยชนอยางอน ในทนไดยกตวอยางการเลอกใชขอมลบางบตทตองการไปใชงานอธบายไดดงน

5.5.1 กำรน ำเฉพำะขอมล 4 บตบนไปใชงำน

การน าเฉพาะขอมล 4 บตบนไปใชงาน ตองเคลยรขอมล 4 บตลางใหเปน 0 มวธการท าคอน าขอมลดงกลาวไปแอนดกบ 0xF0 สามารถแสดงการใชงานไดดงตวอยางท 5.12

ตวอยำงท 5.12 โปรแกรมการน าเฉพาะขอมล 4 บตบนไปใชงาน

ผลลพธของกำรรนโปรแกรม

บรรทดท 5 ตวแปร a = 0xAA (0b10101010) บรรทดท 6 แอนดบตขอมลระหวางตวแปร a กบ 0xF0 แลวน าผลลพธเกบไวทตวแปร y

จากตวอยางท 5.12 สามารถแสดงรายละเอยดการน าเฉพาะขอมล 4 บตบนไปใชงานไดดงตารางท 5.14

ตารางท 5.14 ผลลพธของการน าเฉพาะขอมล 4 บตบนไปใชงาน

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a 1 0 1 0 1 0 1 0 0xAA - 1 1 1 1 0 0 0 0 0xF0

a & 0xF0 1 0 1 0 0 0 0 0 0xA0

Page 16: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

98

5.5.2 กำรน ำเฉพำะขอมล 4 บตลำงไปใชงำน

การน าเฉพาะขอมล 4 บตลางไปใชงาน ตองเคลยรขอมล 4 บตบนใหเปน 0 โดยใหน าขอมลทตองการไปแอนดกบ 0x0F จะท าใหคา 4 บตบนกลายเปน 0 สามารถแสดงการใชงานไดดง ตวอยางท 5.13

ตวอยำงท 5.13 โปรแกรมการน าเฉพาะขอมล 4 บตลางไปใชงาน

ผลลพธของกำรรนโปรแกรม

บรรทดท 5 ตวแปร a = 0xAA (0b10101010) บรรทดท 6 ตวแปร a แอนดบตกบขอมล 0x0F แลวน าผลลพธเกบไวทตวแปร y

จากตวอยางท 5.13 สามารถแสดงรายละเอยดการน าเฉพาะขอมล 4 บตลางไปใชงาน ไดดงตารางท 5.15

ตารางท 5.15 ผลลพธของการน าเฉพาะขอมล 4 บตลางไปใชงาน

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a 1 0 1 0 1 0 1 0 0xAA - 0 0 0 0 1 1 1 1 0x0F

a & 0x0F 0 0 0 0 1 0 1 0 0x0A

Page 17: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

99

5.5.3 กำรเลอกแปลงขอมลบำงบต

ถาตองการใหขอมลทบตใดเปน 1 ใหน าขอมลนนไปออรกบคาคงทคาหนงทมบตต าแหนงดงกลาวเปน 1 เนองจากขอมล 1 ออรกบคาใดๆ จะไดผลลพธเปน 1 แสดงไดดงตวอยางท 5.14

ตวอยำงท 5.14 โปรแกรมการแปลงขอมลบางบต

ตองการใหบต 0 บต 4 และบต 7 ของตวแปร a เปน 1 โดยทบตอนยงมคาเทาเดมโดยสมมตวาตวแปร a มคาเทากบ 0xAA ดงนนคาคงททจะน ามาออรดวยคอ 10010001B หรอ 0x91

ผลลพธของกำรรนโปรแกรม

บรรทดท 5 ตวแปร a = 0xAA (0b10101010) บรรทดท 6 ตวแปร a ออรบตกบขอมล 0x91 แลวน าผลลพธเกบไวทตวแปร y

จากตวอยางท 5.14 สามารถแสดงรายละเอยดการท าขอมลบต 0 บต 4 และบต 7 เปน 1 ไดดงตารางท 5.16

ตารางท 5.16 ผลลพธของการท าใหขอมลบต 0, 4 และ 7 มคาเปน 1

ตวแปร บตขอมล ผลลพธ b7 b6 b5 b4 b3 b2 b1 b0

a 1 0 1 0 1 0 1 0 0xAA - 1 0 0 1 0 0 0 1 0x91

a | 0x91 1 0 1 1 1 0 1 1 0xBB

Page 18: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

100

5.6 สรป

ในบทนผเรยนไดท าความเขาใจเกยวกบตวด าเนนการ ซงเปนประโยชนอยางมากในการพฒนาโปรแกรม C51 เพราะวาการด าเนนการตาง ๆ ไดแกการด าเนนการทางคณตศาสตร การเปรยบเทยบและลอจก และการกระท าทางบต เปนสวนส าคญในการด าเนนงานของโปรแกรม หากเกดขอผดพลาดในสวนการด าเนนการเหลาน เชน มการก าหนดและใชงานตวด าเนนการไมถกตองตามเงอนไขการท างาน อาจสงผลกระทบผลตอการท างานของโปรแกรมซงอาจท าใหเกดความเสยหายตอการพฒนางานไมโครคอนโทรลเลอรได

5.7 แบบฝกหดทำยบท

แบบฝกหดมทงหมด 4 ขอ ใหนกศกษาท าแบบฝกหดทกขอ 1. จงค านวณคาของนพจนตอไปน

1.1) 13 / 4 1.2) 13 % 4 1.3) -13 * 4 1.4) -13 * 4 + 8 1.5) 10 * 7 / 4 1.6) 5 * (6 % 4) 1.7) 1.9 + ‘8’

2. จงหาคาทางคณตศาสตรตอไปนโดยใชโปรแกรม C51 ก าหนดตวแปร a, b, c และ d ใหมคาเปน 1, 2, 3 และ 4 ตามล าดบและค านวณคาค าตอบออกมาเปนชนด float

2.1) ba

ab

2.2) 2c

ba

2.3)

c

ba

cb

a

2.4) ab

ba

2.5) 2

dc

ba

Page 19: ตัวด ำเนินกำรของโปรแกรม C51 - NPRUcourseware.npru.ac.th/admin/files/20171107112351_d1e8a2...84 การท างานของต วด

101

2.6) abc

cba

acbcab

3. จงอธบายความแตกตางระหวางนพจนตอไปน และหาคานพจนเหลานเมอ x มคาเทากบ 0, 1 และ 10 ตามล าดบ

3.1) x && 0x01 3.2) x & 0x01 3.3) x || 0x0F 3.4) x | 0x0F

4. จงใสคาผลลพธในชองวางใหถกตอง 4.1) ตวด าเนนการเปรยบเทยบและลอจก

X Y X<Y X<=Y X>Y X>=Y X==Y X!=Y 3 3 3 4 4 3

4.2) ตวด าเนนการทางบต

X Y X&&Y X||Y !X !Y X&Y X|Y X!=0 && Y!=0 0 0 0 7 5 0 5 7 8 7