Hệ cơ số nào mã máy tính dùng để tính toán

Trong Toán học, hệ cơ số [hay hệ đếm] là một hệ thống các kí hiệu toán học và quy tắc sử dụng tập kí hiệu đó để biểu diễn số đếm. Các kí hiệu toán học có thể là chữ số hoặc các kí tự chữ cái. Cần phân biệt giữa Hệ cơ sốCơ số [số lượng kí hiệu sử dụng trong một hệ cơ số].

Có rất nhiều hệ cơ số khác nhau, mỗi hệ cơ số có những quy tắc biểu diễn số khác nhau. Những dãy kí hiệu giống nhau có thể sẽ ứng với những số khác nhau trong các hệ đếm khác nhau. Ví dụ trong hệ thập phân, 111111 thể hiện số "mười một", tuy nhiên trong hệ nhị phân, nó lại thể hiện số "ba",... Số đếm mà dãy kí hiệu thể hiện được gọi là giá trị của nó.

Có hai loại hệ cơ số là hệ cơ số phụ thuộc vào vị trí và hệ cơ số không phụ thuộc vào vị trí. Chẳng hạn, hệ đếm La Mã là một hệ cơ số không phụ thuộc vào vị trí. Hệ đếm này gồm các kí hiệu chữ cái: I,V,X,L,C,D,M;I, V, X, L, C, D, M;I,V,X,L,C,D,M; mỗi kí hiệu có giá trị cụ thể:

I=1,V=5,X=10,L=50,C=100,D=500,M=1000.I=1, V=5, X=10, L=50, C=100, D=500, M=1000. I=1,V=5,X=10,L=50,C=100,D=500,M=1000.

Trong hệ đếm này, giá trị của các kí hiệu không phụ thuộc vào vị trí của nó. Ví dụ, trong hai biểu diễn IX [9]IX \text{ }[9]IX [9]XI [11]XI\text{ } [11]XI [11] thì XXX đều có giá trị là 101010.

Các hệ đếm thường dùng là các hệ đếm phụ thuộc vị trí. Mọi số nguyên basebasebase bất kỳ có giá trị lớn hơn 111 đều có thể được chọn làm cơ số cho một hệ đếm. Trong các hệ đếm loại này, số lượng kí hiệu sử dụng sẽ chính bằng cơ số của hệ đếm đó, và giá trị tương ứng của các kí hiệu là: 0,1,2,...,base−10, 1, 2,..., base - 10,1,2,...,base1. Để thể hiện một biểu diễn XXX là biểu diễn của số ở hệ cơ số basebasebase, ta kí hiệu là XbaseX_{base}Xbase.

II. Biểu diễn số trong các hệ đếm

Trong một hệ cơ số bbb, giả sử số NNN có biểu diễn:

dndn−1dn−2...d0,d−1d−2...d−md_nd_{n-1}d_{n-2}...d_0,d_{-1}d_{-2}...d_{-m} dndn1dn2...d0,d1d2...dm

trong đó có n+1n + 1n+1 chữ số bên trái dấu phẩy, mmm chữ số bên phải dấu phẩy thể hiện cho phần nguyên và phần phân của NNN, và 0≤di B; } double get_value[string N, int B] { int pos = N.find['.']; string left_path = N.substr[0, pos], right_path = N.substr[pos + 1, N.size[] - pos]; double value = 0, power = 1; for [int i = left_path.size[] - 1; i >= 0; --i] { value += [double][left_path[i] - '0'] * power; power = power * [double]B; } power = 1.0 / [double]B; for [int i = 0; i

Chủ Đề