Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การดำเนินการเลขแบบขยับบิต (Shift Operations) ในภาษา C


ปัญหา

โปรแกรมง่ายๆ แสดงการขยับซ้าย ขยับขวา และคอมพลีเมนต์ของตัวเลข โดยใช้ภาษา C?

วิธีแก้

การขยับซ้าย (Left Shift)

หากค่าตัวแปรขยับซ้าย 1 ครั้ง ค่าจะเพิ่มเป็นสองเท่า

ตัวอย่าง: a = 10, ดังนั้น a << 1 = 20

การดำเนินการเลขแบบขยับบิต (Shift Operations) ในภาษา C

การขยับขวา (Right Shift)

หากค่าตัวแปรขยับขวา 1 ครั้ง ค่าจะลดเหลือครึ่งหนึ่ง

ตัวอย่าง: a = 10, ดังนั้น a >> 1 = 5

การดำเนินการเลขแบบขยับบิต (Shift Operations) ในภาษา C

ตัวอย่าง

โปรแกรม C สำหรับการดำเนินการเลขแบบขยับบิต:

#include <stdio.h>

int main() {
    int a = 9;
    printf("Right shift of a = %d\n", a >> 1); // 4
    printf("Left shift of a = %d\n", a << 1);  // 18
    printf("Complement of a = %d\n", ~a);      // -[9+1] = -10
    printf("Right shift by 2 of a = %d\n", a >> 2); // 2
    printf("Left shift by 2 of a = %d\n", a << 2);  // 36
    return 0;
}

ผลลัพธ์

เมื่อรันโปรแกรม จะได้ผลลัพธ์ดังนี้:

Right shift of a = 4
Left shift of a = 18
Complement of a = -10
Right shift by 2 of a = 2
Left shift by 2 of a = 36