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

C โปรแกรมนับเลขศูนย์ต่อท้ายและนำหน้าในเลขฐานสอง


ในการเริ่มต้น ให้เราทำความเข้าใจว่าเลขศูนย์ต่อท้ายในเลขฐานสองคืออะไร

เลขศูนย์ต่อท้าย

ตำแหน่งของศูนย์หลังตัวแรกจากบิตที่มีนัยสำคัญน้อยที่สุด (LSB) เรียกว่าเลขศูนย์ต่อท้ายในเลขฐานสอง

ตัวอย่าง

104 เป็นเลขฐานสิบ

เลขฐานสองของ 104 คือ:(MSB) 1101000(LSB)

ที่นี่

  • MSB หมายถึงบิตที่มีนัยสำคัญมากที่สุด
  • LSB หมายถึงบิตที่มีนัยสำคัญน้อยที่สุด
  • จาก LSB หลังจากชุดบิตแรก มีศูนย์สามตัว
  • จำนวนศูนย์ต่อท้ายคือสาม

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรมที่จะนับจำนวนศูนย์ต่อท้ายสำหรับจำนวนที่กำหนด -

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, trail = 0, size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   for(i = 0; i < size; i++){
      if((number >> i) & 1) {
         break;
      }
      trail++;
   }
   printf("Number of trailing ZERO is = %d", trail);
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

Enter a number
24
Number of trailing ZERO is = 3

เลขศูนย์นำหน้า

หากตำแหน่งศูนย์ ก่อนบิตถูกตั้งค่าเป็นหนึ่ง จะเรียกว่าเป็นศูนย์นำหน้า

ตัวอย่าง

94 เป็นเลขฐานสิบ

เลขฐานสองของ 94 คือ:(MSB) .....001101110(LSB)

จำนวน ZERO นำหน้าคือ =25

โปรแกรม

ด้านล่างนี้คือโปรแกรมนับจำนวนศูนย์นำหน้าสำหรับจำนวนที่กำหนด

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, lead = 0, Msb,size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   Msb=1<<(size-1);
   for(i = 0; i < size; i++){
      if((number << i) & Msb) {
         break;
      }
      lead++;
   }
   printf("Number of Leading ZERO is = %d", lead);
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

Enter a number
94
Number of Leading ZERO is = 25