ในการเริ่มต้น ให้เราทำความเข้าใจว่าเลขศูนย์ต่อท้ายในเลขฐานสองคืออะไร
เลขศูนย์ต่อท้าย
ตำแหน่งของศูนย์หลังตัวแรกจากบิตที่มีนัยสำคัญน้อยที่สุด (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