Binary, Octal and Hexadecimal Numbers

บ่อยครั้งที่นักพัฒนาโปรแกรมทางด้านระบบสมองกลฝังตัว จะต้องเขียนโปรแกรมเพื่อรับส่งข้อมูลตรงกับตัวฮาร์ดแวร์หรือระบบเครื่องจักร ซึ่งจำเป็นจะต้องมีการอ่านค่าในระดับที่เป็นตัวเลขที่ไม่ใช่เลขฐานสิบที่คนทั่วไปคุ้นเคย แต่จะเป็นเลขฐานสอง เลขฐานแปด และเลขฐานสิบหก

แล้วจะมีเทคนิคการเขียนด้วยภาษา C/C++ ในการจัดการค่าฐานเหล่านี้อย่างไร?

โดยหลักการในการเขียนโปรแกรม ค่าฐานสิบ (decimal value) สามารถถูกใช้โดยไม่ต้องมีตัวอักขระกำกับ (prefix character) แต่ค่าฐานอื่น ๆ จะต้องมี prefix ดังตัวอย่างข้างล่าง

  1. ค่าเลขฐานสอง (Binary value) จะใช้ "0b" (เลขศูนย์ ตามด้วยตัวพิมพ์เล็ก ‘b’) เช่น 0b11001010

  2. ค่าเลขฐานแปด (Octal value) จะใช้ "0" (เลขศูนย์) เช่น0533

  3. ค่าเลขฐานสิบหก (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?