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