Bảng tính đổi các số hệ thập phân thành hệ nhị phân

Liên hệ QC

linhbienphong

Thành viên mới
Tham gia
14/1/07
Bài viết
26
Được thích
35
Tôi đang gặp khó khăn khi lập một bảng tính Excel để đổi các số hệ thập phân sang hệ nhị phân(đến 24 ký tự).
Vấn đề gặp phải khi tính toán tìm số hàng cột của các block ảnh vệ tinh của Google Maps(mục đích là tải các ảnh vệ tinh về , khi ta nhập tọa độ địa lý vào).
Một bảng tính thủ công(phải can thiệp tay vào) tôi đã lập được, nhưng để Excel tự động hoàn toàn(chỉ cần nhập số hệ thập phân vào ô giá trị cần đổi).
Tôi đã đưa vào Blog cá nhân. Các bạn có thể tải file này để xem và góp ý giúp tôi nhé giải quyết nhé. Cảm ơn !
Đường dẫn:
http://files.myopera.com/dinhvivetinhGPS/GE/Doi%20Thap%20phan%20sang%20Nhi%20phan2.xls
BinaKetqua.JPG
 
Chuyển hệ thập phân sang nhị phân (30 chử số)

linhbienphong đã viết:
Tôi đang gặp khó khăn khi lập một bảng tính Excel để đổi các số hệ thập phân sang hệ nhị phân(đến 24 ký tự).
Bạn dùng hàm này để chuyển số thập phân sang nhị phân, tôi thử đến số 999999999 chuyển sang nhị phân là
111011100110101100100111111111 (30 chữ số)
Có thể nó sẽ giải quyết được vấn đề bạn nêu.
Mã:
Function DECBIN(number As Long) As String
Dim bin As String
Do While number > 0
  m = number Mod 2
  number = number \ 2
  bin = m & bin
Loop
DECBIN = bin
End Function
 

File đính kèm

  • DECBIN.zip
    6.1 KB · Đọc: 202
Cám ơn hàm bác Phamduylong, Cho em hỏi thêm, có cách nào để mở rộng tới 32 số không vì trong thực tế thường dùng số chẵn lần của 1 byte. Ví dụ số thực sẽ dùng đến 4 bytes =32 bit.
 
phamnhukhang đã viết:
Cám ơn hàm bác Phamduylong, Cho em hỏi thêm, có cách nào để mở rộng tới 32 số không vì trong thực tế thường dùng số chẵn lần của 1 byte. Ví dụ số thực sẽ dùng đến 4 bytes =32 bit.
Bị vướng chỗ này: m = number Mod 2
Vì mod chỉ làm việc với number<2147499900
Để tôi tìm giải pháp khác.
 
phamduylong đã viết:
Bị vướng chỗ này: m = number Mod 2
Vì mod chỉ làm việc với number<2147499900
Để tôi tìm giải pháp khác.
Chào bác!
Thực chất của hàm Mod là lấy số dư của phép chia.

Vì vậy nếu các số lớn quá bác dùng về thứ 2.
Mã:
[B]m = number - 2 * INT(number / 2)[/B]
 
Lần chỉnh sửa cuối:
Công thức của bác nvson hay quá, Cám ơn bác.
 
Lần chỉnh sửa cuối:
nvson đã viết:
Thực chất của hàm Mod là lấy số dư của phép chia.
MOD(n, d) = n - d*INT(n/d)
Vì vậy nếu các số lớn quá bác dùng về thứ 2
m=number-2*INT(number/2)
Thank nvson. Không những toán tử Mod mà \ cũng vậy, không làm việc với số lớn.
phamnhukhang sử dụng hàm này, 5 byte cũng được.
Mã:
Function DECBIN(number) As String
Dim bin As String
Do While number > 0
m = number - 2 * Int(number / 2)
number = Int(number / 2)
bin = m & bin
Loop
DECBIN = bin
End Function
 
Rất cám ơn bạn phamduylong đã giải quyết giúp vấn đề; và các bạn đã góp ý; Tôi sẽ thử đưa vào bảng tổng hợp của mình.(trường hợp của tôi chỉ cần đến 24 số - tương đương 24 lớp ảnh Vệ tinh, là đủ rồi!).

Hàm của bạn Phamduylong đã giải quyết tốt vướng mắc tôi gặp phải. Một lần nữa xin cảm ơn bạn nhiều!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Web KT
Back
Top Bottom