Binary, Octal and Hexadecimal Numbers
บ่อยครั้งที่นักพัฒนาโปรแกรมทางด้านระบบสมองกลฝังตัว จะต้องเขียนโปรแกรมเพื่อรับส่งข้อมูลตรงกับตัวฮาร์ดแวร์หรือระบบเครื่องจักร ซึ่งจำเป็นจะต้องมีการอ่านค่าในระดับที่เป็นตัวเลขที่ไม่ใช่เลขฐานสิบที่คนทั่วไปคุ้นเคย แต่จะเป็นเลขฐานสอง เลขฐานแปด และเลขฐานสิบหก
แล้วจะมีเทคนิคการเขียนด้วยภาษา C/C++ ในการจัดการค่าฐานเหล่านี้อย่างไร?
โดยหลักการในการเขียนโปรแกรม ค่าฐานสิบ (decimal value) สามารถถูกใช้โดยไม่ต้องมีตัวอักขระกำกับ (prefix character) แต่ค่าฐานอื่น ๆ จะต้องมี prefix ดังตัวอย่างข้างล่าง
ค่าเลขฐานสอง (Binary value) จะใช้ "
0b" (เลขศูนย์ ตามด้วยตัวพิมพ์เล็ก ‘b’) เช่น0b11001010ค่าเลขฐานแปด (Octal value) จะใช้ "
0" (เลขศูนย์) เช่น0533ค่าเลขฐานสิบหก (Hexadecimal value) จะใช้ "
0x" หรือ "0X" (เลขศูนย์ ตามด้วยตัวพิมพ์เล็กหรือพิมพ์ใหญ่ ‘x’ หรือ 'X') เช่น0x12AB, 0x3AFF, 0Xaabf
ตัวอย่างการเขียนด้วยภาษา C
// base_number_1.c
// example of Binary, Octal and Hexadecimal Numbers
#include<stdio.h>
int main(void)
{
int value;
//assigning value in Decimal format
value = 3624;
//printing value in decimal, octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %x\n",value,value,value);
//assigning value in binary format
value = 0b111000101000;
//printing value in Decimal, octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %x\n",value,value,value);
//assigning value in Octal format
value = 07050;
//pringing value in Decimal, Octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %x\n",value,value,value);
//assigning value in Hexadecimal format
value = 0xe28;
//printing value in Decimal, Octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %x\n",value,value,value);
return 0;
}ทำการ complie และดูผลลัพธ์โปรแกรม
ตัวอย่างการเขียนด้วยภาษา C++
ทำการ complie และดูผลลัพธ์โปรแกรม
ตัวอย่างประยุกต์การแปลงเลขฐานสอง ฐานแปด ฐานสิบหก
ทำการ complie และดูผลลัพธ์โปรแกรม
Last updated
Was this helpful?