Chương trình Tô mỳ Minh duy

Giải quyết hiệu quả vấn đề trong những mối quan hệ

Dấu chấm tĩnh, Fixed Point là gì?

 

Dấu chấm tĩnh, Fixed Point là gì?

Tony Minh Duy

Dựa theo bài viết này, cơ số là số đếm những con số độc đáo khác nhau, tính luôn cả con số không, mà một hệ thống chữ số theo vị trí dùng để đại diện cho các số. Cho thí dụ, hệ thống thập phân, hệ thống thông dụng nhất hôm nay, lấy 10 làm cơ số, do vậy số tối đa một con số đơn độc sẽ vối tới là 9, sau đó thì cần phải cộng vào một con số (digit) khác để thành đạt một số cao hơn.

Một lần nữa, dựa theo bài viết này, dấu cơ số là ký hiệu dùng trong những đại diện số lượng để phân ly giữa phần số nguyên (bên trái dấu cơ số) với phần phân số hoặc số lẻ (bên phải dấu cơ số) của số lượng đó.

Trong tiếng Việt, dấu cơ số là một dấu phẩy, ví dụ, 234,56 cho tiền tệ có giá trị là 234 đồng và 56 xu, nếu một đồng có 100 xu. Trong tiếng Anh, dấu cơ số là một dấu chấm, 234 đô và 56 cent (1 đô = 100 cent) viết như sau: 234.56. Trong tiếng Anh, vì dấu chấm lúc nào cũng phân chia số nguyên và số lẻ nên người ta nói nó có vị trí cố định vì thế gọi là fixed point number representation, có nghĩa là, dùng dấu chấm tĩnh (fixed point) đại diện (representation) giá trị một số.

Trong Đại Việt Ngữ (ĐVN) chúng ta không dùng cụm từ dấu chấm tĩnh vì sẽ không chuẩn xác đối với dấu thập phân trong tiếng Việt: dấu phẩy. Thay vì thế, chúng ta sẽ gọi nó là dấu cơ số tĩnh. Cụm từ này áp dụng được trong cả hai văn hoá bất kể dấu cơ số là dấu chấm hay dấu phẩy. Ví dụ, trong số 1.234,56 của tiếng Việt và số 1,234.56, ai cũng hiểu chính xác dấu cơ số là ký tự nằm giữa con số 4 và 5.

Giải thích tỉ mỉ như thế cần thiết vì sẽ có nhiều người Mỹ gốc Việt không làm việc với người ở Việt Nam và cụm từ dấu cơ số tĩnh (DCST) sẽ bảo đảm sự chuẩn xác và chính xác trong lời nói nhất là khi làm việc qua điện thoại hoặc chat qua web.

Dưới đây dấu mũ ^ có nghĩa là luỹ thừa. 10^4 có nghĩa là 10 x 10 x 10 x 10 = 10.000 = 100^2 = 100 x 100. Trong ví dụ 234,56, giá trị nó được tính ra bằng công thức này:
(2 x 10^2) + (3 x 10^1) + (4 x 10^0) + (5 x 10^-1) + (6 x 10^-2)
= (2 x 100) + (3 x 10) + (4 x 1) + (5 x 1/10) + (6 x 1/100)

Trong hệ nhị phân, DCST (dấu cơ số tĩnh) cũng làm việc tương tự như thế. 2^4 có nghĩa là 2 x 2 x 2 x 2 = 16 = 4 x 4. Giá trị của số nhị phân 100,11 được tính ra bằng công thức này:
100,112
= (1 x 2^2) + (0 x 2^1) + (0 x 2^0) + (1 x 2^-1) + (1 x 2^-2)
= (1 x 4) + (0 x 2) + (0 x 1) + (1 x 1/2) + (1 x 1/4)
= 4,7510 = 4 + 3/4

Dùng một Byte Đại diện Số âm

Một byte có 8 bit (binary digit). Nếu cho rằng một byte đại diện một số nhưng không cần dấu trừ mà cũng không cần số lẻ thì số nhỏ nhất là 00000000 tức là số không và số lớn nhất là 111111112 = FF16 = 25510.

Nếu lấy bit đầu tiên làm dấu cộng hoặc trừ thì số lớn nhất là 7F16 = +12710 và số nhỏ nhất là -12710.

Dùng hai Byte Đại diện Số âm lẻ

Nếy lấy hai byte (16 bit) đại diện số âm và số lẻ cùng một lúc thì byte đầu tiên làm việc y như trên với số lớn nhất là 7F16 = +12710 và số nhỏ nhất là -12710. Byte kia (bên phải) dùng để đại diện phần số lẻ.

Số lẻ nhỏ nhất là 000000012 = 0116 và số lẻ lớn nhất là 111111112 = FF16.

Để tính ra số lẻ dương lớn nhất thì ta có 0,FF16 = (F x 16^-1) + (F x 16^-2) = (15 x 1/16) + (15 x 1/256) = (240 + 15) / 256 = 255/256 = 0,9960937510. Điều này có nghĩa là hai byte sẽ không thể nào đại diện được những giá trị nhỏ hơn 1,010 nhưng lớn hơn 0,9960937510.

Để tính ra số lẻ dương nhỏ nhất thì ta có 0,0116 = (0 x 16^-1) + (1 x 16^-2) = (0 x 1/16) + (1 x 1/256) = 1/256 = 0,0039062510. Điều này có nghĩa là hai byte sẽ không thể nào đại diện được những giá trị nhỏ hơn 0,0039062510 nhưng lớn hơn số không.

Cần mấy Byte để Đại diện một Giá trị?

Nếu một số có giá trị là G1T = -1.985,62510 (một ngàn chín trăm tám mươi lăm dưới số không cộng với 625 phần ngàn dưới số không) thì cần phải có bao nhiều byte để đại diện?

Nếu không nói về số lẻ thì hai byte chỉ có thể đại diện một giá trị giữa -127 và 127. Độ gia tăng kế tiếp là cần phải có 4 byte chứ không bao giờ 3 vì số byte bên trái và bên phải dấu cơ số phải bằng nhau.

Trong kiểu 4 byte thì ta có hai byte đầu dành cho số nguyên nằm giữa -7FFF16 và +7FFF16 tức là giữa -3276710 và +3276710. Vậy thì câu trả lời là, cần phải có ít nhất 4 byte mới đại diện được giá trị -1.985,62510 = -FC1,A16. Cho con dấu vào bit đầu tiên của 4 byte ta có chuổi byte sau đây dùng để đại diện giá trị G1T: 8FC1A000.

Cách tính cho Dấu cơ số tĩnh 2 Byte

Nếu hai byte là F834 thì nó có giá trị bao nhiêu dựa vào kiểu dữ liệu Dấu cơ số tĩnh 2 Byte? Byte 1 (F8) là phần số nguyên. F = 1111 có nghĩa là bit đầu tiên là cho số âm. Sau khi lấy bit đầu tiên ra thì byte 1 cho ta giá trị là 78. Vậy thì phần số nguyên là -12010.

Để tính ra số lẻ ta có 0,3416 = (3 x 16^-1) + (4 x 16^-2) = (3 x 1/16) + (4 x 1/256) = (48 + 4)/256 = 0,20312510.

Vậy thì, nếu dựa vào kiểu dữ liệu Dấu cơ số tĩnh thì hai byte F834 mang giá trị là -120,20312510.

Advertisements

About cttmmd

creator of www.tapsu.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Information

This entry was posted on 11-07-2007 by in CNTT, Lập trình.
%d bloggers like this: