PDA

View Full Version : Cần giúp : chuyển đổi số từ hệ nhị phân sang hệ thập phân.



linhbienphong
09-01-08, 03:45 PM
Bạn PhamDuyLong và các bạn ơi, tôi rất tha thiết nhờ các bạn giúp cho tạo một hàm(hay bảng tính): đổi các số từ hệ nhị phân sang thập phân.
Khó khăn tôi gặp phải trong bài toán ngược: khi biết tên một block ảnh vệ tinh của Google, hãy chỉ ra tọa độ của nó. Tôi đã tìm ra số hàng cột của block ấy(là số nhị phân). Nhưng để nhận được tọa độ, buộc phải đổi số hàng cột (nhị phân) ấy thành hệ thập phân, thì bảng tính mới hoạt động được.
Rất cảm ơn các bạn trước!

Các bạn đã rất nhiệt tình giúp mình, mình lắp ghép vào công thức để tính chuyển, những không có cách nào khắc phục được điều kiện: hàm chuyển đổi sử dụng kết quả nhị phân từ 1 ô tham chiếu khác! Các bạn ơi hãy xem giúp và chỉ bảo cho mình với!
Nó phải tính 4 điểm tọa độ (8 giá trị số thập phân 1 lúc cơ).
Mình gửi file đính kèm nhờ các bạn đây!
http://i224.photobucket.com/albums/dd255/Cartograph/bangtinh.jpg

TranThanhPhong
09-01-08, 03:54 PM
Bạn đọc bài trong link dưới đây:

http://www.giaiphapexcel.com/forum/showpost.php?p=31538&postcount=42

Lưu ý phải vào Tools | Add-Ins | chọn Analysis ToolPak

TP.

linhbienphong
09-01-08, 04:03 PM
Vâng,thế mà tôi chẳng biết, cảm ơn các bạn nhiều lắm! Tôi sẽ thử ngay đây!
- Không ổn rồi các bạn ạ: hàm này chỉ đổi được các số nhị phân có 9 số thôi, mà tôi lại cần đổi các số có 19 số cơ!
Các bạn xem giúp với nhé!

kongcom
09-01-08, 08:36 PM
Hãy bắt đầu bằng chữ cái bất kì trước số nhị phân bạn muốn đổi . Sở dĩ phải như vậy vì EXCEL sẽ hiển thị sai số cùa bạn nếu con số quá dài nó sẽ tự chuyển sang hệ Hexa...

Keyboard Shortcut: Ctrl+Shift+T

Chúc bạn hoàn thành nhiệm vụ

dat2007
09-01-08, 08:43 PM
Do không đủ thời gian viết thành một hàm cho bạn nên bạn có thể tạm sử dụng bảng tính với các công thức như trong hình

http://www.uploadgeek.com/uploads456/0/B2D.jpg (http://www.uploadgeek.com)

Hoặc bạn vào trang Web này (http://acc6.its.brooklyn.cuny.edu/~gurwitz/core5/nav2tool.html) để đổi B2D


http://www.uploadgeek.com/uploads456/0/B2Dw.jpg (http://www.uploadgeek.com)

BNTT
09-01-08, 09:05 PM
Hãy bắt đầu bằng chữ cái bất kì trước số nhị phân bạn muốn đổi . Sở dĩ phải như vậy vì EXCEL sẽ hiển thị sai số cùa bạn nếu con số quá dài nó sẽ tự chuyển sang hệ Hexa...
Keyboard Shortcut: Ctrl+Shift+T
Chúc bạn hoàn thành nhiệm vụ
Không thể chạy cái macro của bạn khi Sheet bị Protect, mà Unprotect thì... không có password!
Bạn đọc cái này nhé:

http://i216.photobucket.com/albums/cc49/BNTT_photos/042.jpg

--------
Cho tôi hỏi thêm chút, bạn gõ tiếng Việt bằng chương trình gì vậy, dấu nó bỏ tức cười quá!

anhtuan1066
09-01-08, 09:07 PM
Oh... hô... nếu đã lở chơi công thức thì làm 1 nhát, 1 công thức duy nhất...
Cái này đây:


=SUM((2^(LEN($A$1)-ROW(INDIRECT("1:"&LEN($A$1)))))*(MID($A$1,ROW(INDIRECT("1:"&LEN($A$1))),1)))
Điều kiện bắt buộc duy nhất là cell nhập số nhị phân A1 phải dc định dạng là TEXT...
Ah... quên... công thức này là mãng... vì thế phải Ctrl + Shift + Enter (chứ ko phải Enter nha)
Cách làm này là do nhìn thấy gợi ý của bạn Dat2007... cảm ơn bạn!
Mến
ANH TUẤN

nvson
09-01-08, 09:27 PM
Thêm 1 cách nữa nhé (dùng VBA)


Option Explicit
Public Function Bin2Dec_GPE(binNumber)
On Error GoTo thoat
Dim i, gtri
For i = 1 To Len(binNumber)
gtri = gtri + Mid(binNumber, i, 1) * 2 ^ (Len(binNumber) - i)
Next i
Bin2Dec_GPE = gtri
thoat:
End Function

Cũng như cách của bác anhtuan, điều kiện sử dụng là ô chứa số nhị phân phải định dạng là text, sau đó mới nhập số nhị phân (nếu không những số lớn quá Excel sẽ twj chuyển sang dạng khoa học E+....)

linhbienphong
09-01-08, 09:42 PM
Tuyệt vời! Rất cảm ơn các bạn! Các bạn thực sự là những chuyên gia Excel tầm cỡ!
Tôi xin hỏi thêm: nếu công thức này sử dụng đầu vào (nhị phân) là một ô tham chiếu khác, ô này có được ngay khi người ta ...Enter (khi nhập một giá trị đầu vào là tên block), nếu không bấm Ctr+Shift+Enter thì nó ...không chạy hả bạn?

anhtuan1066
09-01-08, 09:57 PM
Tất nhiên khi bạn bấm Enter thì kết quả sẽ sai... Lý do vì sao thì có lẽ nên tham khảo thêm về mãng... Nhưng cho dù lở Enter rồi thì vẫn sửa sai dc... Bạn click chuột vào công thức trên thanh Formula, sau đó.. Ctrl + Shift + Enter thì .. kết quả lại đúng... hi... hi...
Nhưng mà nè... Dù sao bạn cũng chỉ thao tác Ctrl + Shift + Enter có 1 lần thôi mà... Từ đây trở đi bạn đâu cần quan tâm tới nó, cứ nhập số nhị phân vào cell A1 thì cell chứa công thức tự ra kết quã... Bạn hiểu ko?
Và nếu trong file cũa bạn, cell nhập số ko phải là cell A1 thì bạn tự sửa lấy nhé (cứ thay A1 là cell nào mà bạn nhập số nhị phân vào ấy)... Chỉ cần nhớ 1 điều là phải Ctrl + Shift + Enter mà thôi
Còn câu này:

Tôi xin hỏi thêm: nếu công thức này sử dụng đầu vào (nhị phân) là một ô tham chiếu khác, ô này có được ngay khi người ta ...Enter (khi nhập một giá trị đầu vào là tên block)...
Câu này chưa hiểu ý lắm...
----------------------------
He... he... nhìn kỹ thấy cách cũa mình y chang vòng lập FOR cũa nvson ... cách khác nhau nhưng cùng 1 thuật toán mà thôi...

Nhân đây nói luôn với các bạn về hiện tượng này... Có khi ta gõ vào công thức rồi Enter hay Ctrl + Shift + Enter mà nó lại ko ra kết quã... chỉ hiện toàn những gì ta vừa gõ... Có vẽ như ta vừa gõ chử vào vậy...
Gặp hiện tượng này thì hãy kiểm tra lại cell ấy, tin chắc 99% nó đang dc Format là TEXT... (Click chuột phải trên cell, chọn Format Cells)... Giờ thì hãy định dạng nó lại thành General, rồi click chuột vào công thức trên thanh Formula, Enter hoặc Ctrl + Shift + Enter là mọi chuyện sẽ dc giãi quyết
Mến
ANH TUẤN

kongcom
09-01-08, 10:10 PM
Mình đã mở khoá File để chạy Marco .
Làm mới biết , thuật toán không phải là tất cả .

Mình gõ tiếng Việt bằng Viêtnamese for Windows . Cũng không nghĩ là khi hiển thị trên máy của mọi người nó lại buồn cười . Đơn giản là cách gõ này mình không cần Font Vn hay Vni gì cà .

phamduylong
10-01-08, 10:31 PM
Bạn PhamDuyLong và các bạn ơi, tôi rất tha thiết nhờ các bạn giúp cho tạo một hàm(hay bảng tính): đổi các số từ hệ nhị phân sang thập phân.
Mới viết xong hàm BINDEC để chuyển từ nhị phân sang thập phân. Do trong VBA số trên 15 chữ số bị chuyển qua dạng E+ nên bạn sử dụng hàm này như sau:
- Số nhị phận <= 15 chữ số hàm xử lý tốt.
- Số nhị phân > 15 chữ số: ô nhập số nhị phân phải định dạng là Text hoặc phải nhập dấu nháy đơn ( ' ) trước khi nhập số nhị phân.


Function BINDEC(number As String) As Double
tpChr = Trim(number)
s = Len(number)
For i = s To 1 Step -1
m = Mid(tpChr, i, 1)
If m > 1 Then
BINDEC = Error(2015)
Exit Function
End If
m = m * 2 ^ (s - i)
tpNum = m + tpNum
Next
BINDEC = tpNum
End Function

longnh
19-02-08, 08:44 AM
Oh... hô... nếu đã lở chơi công thức thì làm 1 nhát, 1 công thức duy nhất...
Cái này đây:


=SUM((2^(LEN($A$1)-ROW(INDIRECT("1:"&LEN($A$1)))))*(MID($A$1,ROW(INDIRECT("1:"&LEN($A$1))),1))) Điều kiện bắt buộc duy nhất là cell nhập số nhị phân A1 phải dc định dạng là TEXT...
Ah... quên... công thức này là mãng... vì thế phải Ctrl + Shift + Enter (chứ ko phải Enter nha)
Cách làm này là do nhìn thấy gợi ý của bạn Dat2007... cảm ơn bạn!
Mến
ANH TUẤN
Cũng hay nhưng sao không chuyển thành text trước bởi hàm text đi. Điều kiện ở đây nếu viết code hay sử dụng Plugin thì rất đơn giản. Chiến bằng công thức mới hay.

linhbienphong
01-07-08, 02:25 PM
Đây là sản phẩm cuối cùng, trong đó có sử dụng kết quả chuyển đổi trên, để tìm ra được tọa độ 4 góc của tấm ảnh vệ tinh gồm 1024 blog ghép lại. Các bác thử chạy nhé(thay tọa độ nơi nào cần lấy ảnh vào, rồi copy cột A(phần màu vàng, dán vào Notepad để ghi thành file *.HTML, mở file này trong trình duyệt Web, các bác sẽ thấy...rất bổ ích!).
Dùng bảng tính này để ..."đào mỏ" của Google các bác ạ!

linhbienphong
01-08-08, 04:28 PM
Thưa các bác, vì lý do an ninh, Google thường hay...thay đổi các chỉ số, địa chỉ máy chủ(tên) dẫn đến các link lấy ảnh không hoạt động; tức là không thể tải ảnh về được. Vừa rồi, ngày 25/7 Google lại thay đổi lần nữa.
Tôi đã sửa lại bảng tính(BT04.01) bác nào quan tâm xin hãy tải bảng tính mới này, mới lấy được ảnh.

linhbienphong
17-11-08, 10:19 AM
Thưa các bác, vì lý do an ninh, Google thường hay...thay đổi các chỉ số, địa chỉ máy chủ(tên) dẫn đến các link lấy ảnh không hoạt động; tức là không thể tải ảnh về được. Vừa rồi, Google lại thay đổi lần nữa.
Tôi đã sửa lại bảng tính mới bác nào quan tâm xin hãy tải bảng tính mới này, mới lấy được ảnh.
Tại blog: http://files.myopera.com/dinhvivetinhGPS/EXCEL/BangtinhV05_1.zip



(http://files.myopera.com/dinhvivetinhGPS/EXCEL/BangtinhV05_1.zip)

phamduylong
27-11-08, 07:57 PM
Thưa các bác, vì lý do an ninh, Google thường hay...thay đổi các chỉ số, địa chỉ máy chủ(tên) dẫn đến các link lấy ảnh không hoạt động; tức là không thể tải ảnh về được. Vừa rồi, Google lại thay đổi lần nữa.
Tôi đã sửa lại bảng tính mới bác nào quan tâm xin hãy tải bảng tính mới này, mới lấy được ảnh.
Tại blog: http://files.myopera.com/dinhvivetinhGPS/EXCEL/BangtinhV05_1.zip

Web do bảng tính BangtinhV05_1.xls tạo tải bản đồ về rất nhanh nhưng tôi lại bị hiện tượng không cho Save As trang Web vào PC, chỉ lưu được vài trăm mảnh bản đồ thì báo lỗi. Trong khi các trang Web khác thì lưu bình thường. Tôi đã thử qua máy khác cũng bị như vậy.
http://i45.photobucket.com/albums/f78/phong_lam/DownloadError.jpg
Tôi đang dùng Firefox 3.0.4.

linhbienphong
01-12-08, 12:15 AM
Xin lỗi bác PhamDuyLong, tôi phải đi công cán xa, nay mới về, trả lời bác được.
Tôi đã thử ghi lại trên máy của mình, vẫn ghi trọn vẹn hết 1024 ảnh bác ạ. Chắc có vấn đề gì về máy thôi, Google chưa có biện pháp chống ghi kiểu này mà bác!
Bác không nên tải, ghi nhiều tệp một lúc(hình như không quá 30 phút tải liên tục) khi thấy máy có IP nào dạng này, cơ chế bảo vệ tự động của Google có khả năng chống ghi chăng? Tốt nhất, sau 20 phút, bác rút giây mạng ra vài phút, ngắt xong cắm lại rồi tải tiếp. Bác thử vậy xem nha.
Còn khả năng nữa do Virus mạng chăng? Vấn đề này nằm ...ngoài hiểu biết của tôi rồi bác ạ. Mong bác thứ lỗi.

mr.traanf
09-05-13, 02:41 PM
Vâng,thế mà tôi chẳng biết, cảm ơn các bạn nhiều lắm! Tôi sẽ thử ngay đây!
- Không ổn rồi các bạn ạ: hàm này chỉ đổi được các số nhị phân có 9 số thôi, mà tôi lại cần đổi các số có 19 số cơ!
Các bạn xem giúp với nhé!

Gởi bạn linhbienphong công cụ chuyển đổi số nhị phân, thập phân,...., thập lục phân với số bất kỳ lớn bao nhiêu cũng được. Bạn dùng thử xem nhé!
Kèm file