วันเสาร์ที่ 25 มกราคม พ.ศ. 2557

สรุปเนื้อหา ครั้งที่ 1 

big-endian และ little-endian

    big-endian และ little-endian เป็นคำอธิบายลำดับของกลุ่มไบต์ที่เก็บในหน่วยความจำของคอมพิวเตอร์ big-endian เป็นลำดับโดยที่ "big end"(มีค่านัยยะสำคัญในชุดข้อมูลที่เก็บเป็นอันดับแรก(ที่addressน้อยที่สุดของหน่วยเก็บข้อมูล little-endian เป็นลำดับโดยที่"little end"(มีความสำคัญน้อยในกลุ่มข้อมูล)จะได้รับการเก็บเป็นอันดับแรกเช่น คอมพิวเตอร์ big-end ต้องการ 2 ไบต์ ของเลขฐานหกหมายเลข 4FS2 จะได้รับการเก็บที่ 4FS2 ในหน่วยเก็บข้อมูล(ถ้า 4F เก็บที่ตำแหน่ง 1000 และ S2 จะเก็บที่ตำแหน่ง 1001)ในระบบ lettle-endion จะเก็บเป็น S24F (S2 เก็บที่ตำแหน่ง 1000 และ 4F ที่ 1001) 

Floating point


เลขนัยสำคัญ × ฐาน เลขชี้กำลัง

   มาตรฐาน IEEE-754  เป็นมาตรฐานที่ถูกกำหนดขึ้นโดยหน่วยงาน ชื่อ IEEE (The Institute of Electrical and Electronics Engineers)เพื่อใช้เป็นมาตรฐานในการเก็บเลขทศนิยม (Floating Point) ในระบบคอมพิวเตอร์

   ปัจจุบันของ IEEE 754 คือ  IEEE 754-2008 ซึ่งเผยแพร่ในสิงหาคม ค.ศ.2008 ซึ่งถูกรวมเข้ากับต้นฉบับ IEEE 754-1985 ( ซึ่งถูกตีพิมพ์ในปี 1985) และมาตรฐาน IEEE สำหรับ Radix-Independent Floating -Point Arithmetic ( IEEE 854-1987 )

ในทางคอมพิวเตอร์ จำนวนจุดลอยตัว (อังกฤษ: floating point) คือระบบแทนจำนวนชนิดหนึ่ง ซึ่งจำนวนนั้นอาจมีขนาดใหญ่หรือขนาดเล็กเกินกว่าที่จะแทนด้วยจำนวนเต็ม เนื่องจากจำนวนต่าง ๆ สามารถเขียนแทนด้วยเลขนัยสำคัญ (mantissa) จำนวนหนึ่งโดยประมาณ และเปลี่ยนสเกลด้วยเลขชี้กำลัง (exponent) ฐานของสเกลปกติจะเป็น 2, 10 หรือ 16 เป็นต้น จำนวนทั่วไปจึงสามารถเขียนให้อยู่ในรูปแบบนี้ได้
คำว่า จุดลอยตัว จึงหมายถึงจุดฐาน (จุดทศนิยม หรือในคอมพิวเตอร์คือ จุดทวินิยม) ที่สามารถ "ลอยตัว" ได้ หมายความว่า จุดฐานสามารถวางไว้ที่ตำแหน่งใดก็ได้ที่สัมพันธ์กับเลขนัยสำคัญของจำนวนนั้น ตำแหน่งนี้แสดงไว้แยกต่างหากในข้อมูลภายใน และการแทนด้วยจำนวนจุดลอยตัวจึงอาจถือว่าเป็นสัญกรณ์วิทยาศาสตร์ในบริบทของคอมพิวเตอร์ หลายปีที่ผ่านมา คอมพิวเตอร์ใช้งานจำนวนจุดลอยตัวในรูปแบบที่แตกต่างกัน เวลาต่อมาจึงทำให้เกิดมาตรฐาน IEEE 754 สำหรับจำนวนที่พบได้อย่างปกติสามัญชนิดนี้
ข้อดีของจำนวนจุดลอยตัวที่มีต่อจำนวนจุดตรึง (fixed point รวมทั้งจำนวนเต็ม) คือจำนวนจุดลอยตัวสามารถรองรับค่าได้ในขอบเขตที่กว้างกว่า ตัวอย่างเช่น จำนวนจุดตรึงที่มีตัวเลขเจ็ดหลัก และกำหนดให้สองหลักสุดท้ายอยู่หลังจุด สามารถแทนจำนวนเหล่านี้ได้ 12345.67, 123.45, 1.23 ในขณะที่จำนวนจุดลอยตัว (ตามเลขฐานสิบของมาตรฐาน IEEE 754) ที่มีตัวเลขเจ็ดหลักเช่นกัน สามารถแทนจำนวนเหล่านี้ได้อีกเพิ่มเติม 1.234567, 123456.7, 0.00001234567, 1234567000000000 เป็นต้น แต่ข้อเสียคือรูปแบบของจำนวนจุดลอยตัวจำเป็นต้องใช้หน่วยเก็บข้อมูลมากขึ้นอีกเล็กน้อย (สำหรับเข้ารหัสตำแหน่งของจุดฐาน) ดังนั้นเมื่อจำนวนทั้งสองประเภทเก็บบันทึกอยู่ในที่ที่เหมือนกัน จำนวนจุดลอยตัวจะใช้เนื้อที่มากกว่าเพื่อเพิ่มความเที่ยง (precision)

การแทนค่าภายใน

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


วิธีการปัดเศษ

วิธีการปัดเศษทางเลือกอื่นก็มีให้ใช้ได้ IEEE 754 ได้ระบุวิธีการปัดเศษไว้ดังนี้

  • ปัดเศษเข้าหาศูนย์(Round toward 0) (การปัดเศษทิ้ง คล้ายพฤติกรรมปกติในการแปลงจำนวนจุดลอยตัวเป็นจำนวนเต็ม เช่นจาก −3.9 เป็น −3)
  • ปัดเศษขึ้น(Round toward + in finity(Ceiling)) (ในทิศทางเข้าสู่ +∞ ดังนั้นค่าลบจะปัดเศษเข้าหาศูนย์)
  • ปัดเศษลง(Round toward - in finity(Floor)) (ในทิศทางเข้าสู่ −∞ ดังนั้นค่าลบจะปัดเศษออกจากศูนย์)
  • ปัดเศษสู่ค่าใกล้สุด ซึ่งค่าที่อยู่กึ่งกลางจะปัดเศษในทิศทางออกจากศูนย์(Round toward, tie away from zero) (เป็นทางเลือกสำหรับจำนวนจุดลอยตัวฐานสอง และเป็นปกติสามัญในฐานสิบ)
  • ปัดเศษสู่ค่าใกล้สุด ซึ่งค่าที่อยู่กึ่งกลางจะปัดเศษสู่เลขโดดที่เป็นเลขคู่ที่อยู่ใกล้สุดในตำแหน่งที่ต้องการ(Round to nearest, tie to even)(วิธีการปริยายและปกติสามัญที่สุด)

ตัวอย่าง
จงแสดงค่าในหน่วยความจำบนเครื่องคอมพิวเตอร์ 32-bit แบบ Big-Endian ของ -37.140625 ถ้าจัดเก็บแบบ Binary 16 (Sign : 1 bit, Exponent : 5 bit, Mantissa : 10 bit, Bias :15)
37.140625 = 100101.001001
ซึ่งเขียนในรูปแบบ Scientific Notation เป็น 1.00101001001 X 2^5 (เลื่อนไป 5 ตำแหน่งเรียก 5 ว่าเป็น exponent ถ้าเลื่อนไปข้างหน้า exponent จะเป็น + ถ้าเลื่อนจุดมาข้างหลัง exponent จะเป็น - )

Biased Exponent(E)    =  Bias + exponent
      = 15+5
                                          = 20
                                          = 0001 0100 แปลงเป็น เลขฐาน จำนวน 5 bit ได้ 1 0100
                                     
Significant (Mantissa)(M) = 00101001001

Sign(6) = 1
- Sign = 0 --> ค่า +
- Sign = 1 --> ค่า -



1. (1101 0000 1010 0100)2 = (D0A4)16
2. (1101 0000 1010 0100)2 = (D0A4)16
3. (1101 0000 1010 0101)2 = (D0A5)16
4. (1101 0000 1010 0101)2 = (D0A5)16
5. (1101 0000 1010 0100)2 = (D0A4)16
***เกิดเศษขึ้นมาคือ 1 Bit เพราะฉะนั้น เราจะต้องทำการปัดเศษ

ปัดเศษ
1.ปัดเศษเข้าหาศูนย์(Round toward 0)
= (1101 0000 1010 0100 = D0A4
2.ปัดเศษขึ้น(Round toward + in finity(Ceiling))
= 1101 0000 1010 0100 = D0A4
3.ปัดเศษลง(Round toward - in finity(Floor))
= 1101 0000 1010 0101 = D0A5
4.ปัดเศษสู่ค่าใกล้สุด ซึ่งค่าที่อยู่กึ่งกลางจะปัดเศษในทิศทางออกจากศูนย์(Round toward, tie away from zero)
= 1101 0000 1010 0101 = D0A5
5.ปัดเศษสู่ค่าใกล้สุด ซึ่งค่าที่อยู่กึ่งกลางจะปัดเศษสู่เลขโดดที่เป็นเลขคู่ที่อยู่ใกล้สุดในตำแหน่งที่ต้องการ(Round to nearest, tie to even)
= (1101 0000 1010 0100)2 = (D0A4)16

เพราะฉะนั้น ค่าในคอมพิวเตอร์ 32-bit แบบ Big-Endian คือ D0 A4 0 0 0 0



สอนการลงโปรแกรม MIPS simulator และ ARM simulator

วิธีการ install MIPS simulator 
Download QtSpim_9.1.12_Windows ที่----> http://sourceforge.net/projects/spimsimulator/files/


วิธีการ install ARM simulator

Download ARMSim# version 1.91 ที่---->http://armsim.cs.uvic.ca/DownloadARMSimSharp.html

วันเสาร์ที่ 11 มกราคม พ.ศ. 2557

สำรวจอุปกรณ์ที่ตนเองมีอยู่ว่ารองรับรหัสอะไรบ้าง
1). Laptop รองรับ Unicode : ASCII
Reference : http://office.microsoft.com/th-th/word-help/HA010167539.aspx

2). smartphone รองรับ Unicode : US-ASCII, UTF-16, UTF-16BE, UTF-16LE, UTF-8
Reference : http://www.unicode.org/standard/translations/thai.html

3). ipod รองรับ รองรับ Unicode : UTF-16
Reference : http://th.wikipedia.org/wiki/UTF-16/UCS-2
Reference : http://learnxml.site90.com/Unicode.html