PIC Vietnam

Go Back   PIC Vietnam > Các Đề Tài > Các đề tài khác

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 06-01-2009, 03:35 PM   #1
viet_bk
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 5
:
Hỏi về dùng số nhị phân

em thấy rất nhiều thuật toán về biến đổi các số nhị phân sang BCD nhưng ko thấy thuật toán BCD sang nhị phân bao giờ. bác nào có thể giới thiệu cho em quyển sách viết về các phép toán số nhị phân. tiếng việt hay tiếng anh cang tốt. em xin cảm ơn
viet_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-01-2009, 05:47 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi viet_bk View Post
em thấy rất nhiều thuật toán về biến đổi các số nhị phân sang BCD nhưng ko thấy thuật toán BCD sang nhị phân bao giờ. bác nào có thể giới thiệu cho em quyển sách viết về các phép toán số nhị phân. tiếng việt hay tiếng anh cang tốt. em xin cảm ơn
Về chuyển đổi BCD sang nhị phân (nó quá trực quan để phải viết thành thuật toán):
http://www.electro-tech-online.com/m...cd-binary.html

Các phép toán số học trên số nhị phân cũng chẳng khác gì trên số thập phân. Hệ nhị phân chỉ là một cách biểu diễn con số ở format khác, nhằm thuận lợi hơn cho việc hiện thực trên máy tính số.

Bạn cần tìm hiểu về phép toán nào thì cứ liệt kê ra đây.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-01-2009, 10:42 AM   #3
viet_bk
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 5
:
em không hiêu trực quan có nghĩa thế nào. nếu em dùng assembly thì làm thế nào. nếu như anh giới thiệu thì vẫn dùng phép nhân.lại phải dùng thêm một hàm nhân. nếu như chuyển từ nhị phân sang BCD thì chỉ cần dịch bít rồi khiểm tra xem có lớn hơn 9 hay không. nêu đúng thì công thêm 6. em muốn tìm một thuật toán dạng như vậy. nếu có anh giới thiệu cho em nhá
viet_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-01-2009, 04:36 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi viet_bk View Post
em không hiêu trực quan có nghĩa thế nào. nếu em dùng assembly thì làm thế nào. nếu như anh giới thiệu thì vẫn dùng phép nhân.lại phải dùng thêm một hàm nhân. nếu như chuyển từ nhị phân sang BCD thì chỉ cần dịch bít rồi khiểm tra xem có lớn hơn 9 hay không. nêu đúng thì công thêm 6. em muốn tìm một thuật toán dạng như vậy. nếu có anh giới thiệu cho em nhá
Trong hệ nhị phân, phép nhân chính là kết hợp của phép dịch và phép cộng. Ví dụ, x*10 = x*8 + x*2 = (x<<3) + x(<<1).

Sau đây là thuật toán chuyển số BCD 5 chữ số thành số nhị phân 16-bit (áp dụng đúng nguyên tắc trên):
http://www.piclist.com/techref/micro...b-5d16b-ph.htm

Bài viết trước đó của bạn chỉ yêu cầu về thuật toán, chứ không cho biết bạn đang viết code hợp ngữ.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-01-2009, 05:46 PM   #5
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
vậy còn số âm thì sao anh Namqn?
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-01-2009, 06:14 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi lequocbao View Post
vậy còn số âm thì sao anh Namqn?
Nếu PIC có hỗ trợ các phép toán trên số có dấu thì chúng ta dùng các phép toán đó. Ngược lại, chúng ta xét dấu của hai toán hạng để xác định dấu của kết quả, rồi chuyển chúng về dạng không dấu, và dùng các thuật toán đã có cho số không dấu. Ví dụ, nhân hai số cùng dấu sẽ cho dấu +, và nhân hai số ngược dấu sẽ cho dấu -.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 10:05 AM   #7
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Nhưng cái quan trọng là làm sao để biết đó là số âm anh Namqn àh!chứ em dùng các câu lệnh như :
int8 x;
if(x<0)
giá trị của x sẽ được giảm từ từ trong vòng lặp hoặc từ nút nhấn giảm bên ngoài.
thì kết quả của lệnh if trên luôn là false anh àh!mặc dù mình biết là x đã được giảm nhỏ hơn 0 rồi.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 10:57 AM   #8
dvkkt
Đệ tử 3 túi
 
dvkkt's Avatar
 
Tham gia ngày: Oct 2007
Nơi Cư Ngụ: TPHCM
Bài gửi: 55
:
Send a message via Yahoo to dvkkt
Bạn khai báo x là sô nguyên 8 bit không dấu, thì làm gì có chuyện giảm nhỏ hơn 0, lệnh if trên luôn false vì x không âm. Thử khai báo signed int8 xem.
dvkkt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2009, 02:54 PM   #9
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
tối nay thử liền!
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 07:37 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam