PDA

View Full Version : [Tutorial] Chuyển đổi giữa các hệ cơ số


iSheep
25-09-2006, 23:26
--- Theo bài viết của haule_nth (REA) ---

Việc chuyển đổi hệ cơ số có thể dùng tool cho nhanh, nhưng nếu không có chúng trong tay thì sao :confused:

Bài viết sẽ có các phần:

1. DECIMAL -> BINARY (thập phân sang nhị phân)
2. DECIMAL -> HEX (thập phân sang hex)
3. HEX -> BINARY (hex sang nhị phân)
4. BINARY -> HEX (nhị phân sang hex)
5. BINARY -> DECIMAL(nhị phân sang thập phân)
6. HEX -> DECIMAL (hex sang thập phân)
Điều đầu tiên là các pác học thuộc cái bảng này cho em:


0000 | 0 | 0
0001 | 1 | 1
0010 | 2 | 2
0011 | 3 | 3
0100 | 4 | 4
0101 | 5 | 5
0110 | 6 | 6
0111 | 7 | 7
1000 | 8 | 8
1001 | 9 | 9
1010 | A | 10
1011 | B | 11
1100 | C | 12
1101 | D | 13
1110 | E | 14
1111 | F | 15

1. DECIMAL -> BINARY (Chuyển từ thập phân sang nhị phân)

Lấy số 3295 (trong hệ thập phân) làm ví dụ:

3295 chia 2 = 1647.5 -> Dư 1
1647 chia 2 = 823.5 -> Dư 1
823 chia 2 = 411.5 -> Dư 1
411 chia 2 = 205.5 -> Dư 1
205 chia 2 = 102.5 -> Dư 1
102 chia 2 = 51 -> Dư 0
51 chia 2 = 25.5 -> Dư 1
25 chia 2 = 12.5 -> Dư 1
12 chia 2 = 6 -> Dư 0
6 chia 2 = 3 -> Dư 0
3 chia 2 = 1.5 -> Dư 1
1 chia 2 = 0.5 -> Dư 1
Sắp xếp các số dư từ dưới lên trên các pác sẽ được:

3295 (demical) = 110011011111 (binary)
=> Đầu tiên chia số cần chuyển đổi cho 2 và lấy số dư, sau đó cứ tiếp tục lấy kết quả của phép chia trên chia tiếp cho 2 (không kèm số dư) cho đến khi kết quả bằng zero.

iSheep
25-09-2006, 23:27
2. DECIMAL -> HEX (Chuyển từ thập phân sang hex)

Tiếp tục dùng số 3295 làm zí dụ, như trên ta có 3295 (demical) = 110011011111 (binary). Chia 110011011111 làm từng chuỗi gồm 4 số, kết hợp với bảng ở trên ta sẽ được:

110011011111b -> 1100 1101 1111 -> C D F
3295 (decimal) = 110011011111 (binary) = 0CDF (hex)

iSheep
25-09-2006, 23:28
3. HEX -> BINARY (Chuyển từ hex sang nhị phân)

Lấy chuỗi DEAD làm zí dụ. Sử dụng bảng trên ta sẽ có:

D = 1101
E = 1110
A = 1010
D = 1101

DEAD (hex) = 1101 1110 1010 1101 (binary)

iSheep
25-09-2006, 23:29
4. BINARY -> HEX (Chuyển từ nhị phân sang hex)

Lấy số 1010110111101111 làm ví dụ, chia thành các chuỗi gồm 4 số:
1010110111101111 -> 1010 1101 1110 1111
Sử dụng bảng trên ta sẽ có được:

1010 = A
1101 = D
1110 = E
1111 = F

1010110111101111 (binary) = 0ADEF (hex)

iSheep
25-09-2006, 23:30
5. BINARY -> DECIMAL(Chuyển từ nhị phân sang thập phân)

Lấy số 1101 làm zí dụ:
1*(2^3) + 1*(2^2) + 0*(2^1) + 1*(2^0) = 13
Số 1 thứ nhất
1 * (2^3)
Số 1 thứ hai
1 * (2^2)
Số 0 thứ ba
0 * (2^1)
Số 1 thứ tư
1*(2^0)

1101 (binary) = 13 (decimal)
=> Số thứ nhất nhân với số 2 với số mũ cao nhất cộng cho số thứ hai nhân với số 2 với số mũ giảm dần cứ thế….

iSheep
25-09-2006, 23:32
6. HEX -> DECIMAL (hex sang thập phân)

Để chuyển đổi từ hex sang decimal đầu tiên ta chuyển hex sang binary, sau đó lại từ binary ta chuyển về decimal. Hix hơi mệt

Lấy số FEED làm ví dụ:

Từ hex sang binary:

FEED (hex) = 1111 1110 1110 1101 (binary)
Từ binary sang decimal:

1*(2^15) + 1*(2^14) + 1*(2^13) + 1*(2^12) + 1*(2^11) + 1*(2^10) +1*(2^9) + 0*(2^8) + 1*(2^7) +1*(2^6) +1*(2^5) + 0*(2^4) +1*(2^3) +1*(2^2) + 0*(2^1) + 1*(2^0) = 65261
Như vậy:

FEED (hex) = 1111111011101101 (binary) = 65261 (decimal)

copperhead
26-09-2006, 11:12
Cái này phục vụ nhiều cho việc chia Subnet. Các bạn search từ khoá "Subnet Calculator" sẽ thấy bài này giúp ích nhiều đấy.
Vỗ tay khích lệ isheep 1 phát.

traminh83
03-07-2007, 15:59
Mấy anh cho em hỏi

Nếu muốn chuyển những chữ số như thế này
6.10.021.1616
6.10.21.1616
sang Hex thi` phải tính thế nào,
đây là phiên bản (version) của một phần mềm,

cái "dấu " . " có được dịch sang HEX kô

anhtrius
03-07-2007, 16:02
Mấy anh cho em hỏi

Nếu muốn chuyển những chữ số như thế này
6.10.021.1616
6.10.21.1616
sang Hex thi` phải tính thế nào,
đây là phiên bản (version) của một phần mềm,

cái "dấu " . " có được dịch sang HEX kô

đưa về nhị phân rồi chuyển qua thập lục phân .
6 --> 00000110(binary) --> 7(Hexca)

nartynnus
03-07-2007, 16:07
6. HEX -> DECIMAL (hex sang thập phân)

Để chuyển đổi từ hex sang decimal đầu tiên ta chuyển hex sang binary, sau đó lại từ binary ta chuyển về decimal. Hix hơi mệt

Lấy số FEED làm ví dụ:

Từ hex sang binary:


Từ binary sang decimal:


Như vậy:

sao không tính luôn FEED= (15x16^3)+(14x16^2)+(14x16^1)+(13x16^0)=(15x4096)+(14x256)+( 14x16)+(13x1)=61440+3584+224+13=65261

traminh83
03-07-2007, 16:42
đưa về nhị phân rồi chuyển qua thập lục phân .
6 --> 00000110(binary) --> 7(Hexca)

em chưa hiểu lắm
tại sao 6 - > 00000110 (binary) mà không phải là
6 -> 0110 (binary)

Anh có thể dịch số 2 số
6.10.21.1616
6.10.021.1616
ra HEX giùm em được không?

anhtrius
03-07-2007, 16:51
em chưa hiểu lắm
tại sao 6 - > 00000110 (binary) mà không phải là
6 -> 0110 (binary)

Anh có thể dịch số 2 số
6.10.21.1616
6.10.021.1616
ra HEX giùm em được không?

hệ số 10 1 byte ứng 8 bit , tức phải có dạng 0000000 ưng với giá trị từ 0 --> 7

6.10.21.1616
6.10.021.1616 mây số này là số gì dậy .

nartynnus
03-07-2007, 16:56
hệ số 10 1 byte ứng 8 bit , tức phải có dạng 0000000 ưng với giá trị từ 0 --> 7

6.10.21.1616
6.10.021.1616 mây số này là số gì dậy .

em thử tự dịch trước coi như bài tập. bọn anh sẽ góp ý. vậy hợp lý hơn

traminh83
03-07-2007, 17:10
hệ số 10 1 byte ứng 8 bit , tức phải có dạng 0000000 ưng với giá trị từ 0 --> 7

6.10.21.1616
6.10.021.1616 mây số này là số gì dậy .

Em mới học hà
chưa biết cách dịch những số như trên

em đọc một tài liệu thấy nó ghi như vầy
Version -----------> Hex
4.20.020.0598 ----> 40368D
4.20.020.0604 ----> 40368D
4.20.021.0598 ----> 40368D
4.20.121.0613 ----> 4034F5
5.20.022.1125 ----> 4037E9
5.30.021.1181 ----> 4037E9

em xem kỹ thì thấy những số này là số phiên bản của một chương trình (software) .
:(:(:(:(:book:

thấy dịch ra Hex dễ dàng thế, em muốn biết được quá trình dịch đó
mong mấy anh giúp em với (em chỉ dịch được mấy số đơn giản thui hà) huhu !!:(:(:(

ntvuong
07-04-2008, 09:49
Có huynh nào biết dịch những số version của chương trình sang Hex không vậy, giúp dùm mình đi. Mình cũng đã xem nhiều tài liệu chuyển cơ số trong diễn đàn rồi nhưng so với kết quả này
Version -----------> Hex
4.20.020.0598 ----> 40368D
4.20.020.0604 ----> 40368D
4.20.021.0598 ----> 40368D
4.20.121.0613 ----> 4034F5
5.20.022.1125 ----> 4037E9
5.30.021.1181 ----> 4037E9
thì không có mối liên hệ gì cả, nên không biết dùng cách gì để đổi cả
Mong các bạn giúp đỡ
Thank !

yamakawa
07-04-2008, 09:53
Thanks các thông tin trao đổi của các bạn, xipam 1 cái sau này đọc lại :07: