![]() |
các lệnh chuyển từ binary qua decimal
bạn nào chỉ dùm mình các lệnh chuyển từ số nhị phân ==> thập phân trong CCS
thanks |
để làm gì vậy bạn?
|
Cái chắc bạn nên tạo một cái hàm chuyển đổi theo quy tắc chuyển đổi.
Ví dụ 111=1*2^2+1*2^1+1*2^0=7 , chứ trong CCS C hình như không có sẵn. |
bạn có thể nói rõ giải thuật được không ? hoặc 1 ví dụ cụ thể CCS.
thanks. |
int16 laybit(int16 binary,int8 vitri)
{ if (dbit==0) kq3&=0b00000001; else if (dbit==1) kq3&=0b00000011; else if (dbit==2) kq3&=0b00000111; else if (dbit==3) kq3&=0b00001111; else if (dbit==4) kq3&=0b00011111; else if (dbit==5) kq3&=0b00111111; else if (dbit==6) kq3&=0b01111111; else if (dbit==7) kq3&=0b11111111; return kq3; } void main() { for (i=0;i<8;i++) thapphan=thapphan+laybit(binary,i)*2^1; } Giải thích, ban đầu bạn làm một hàm lấy từng byte trong chuỗi binary, từ vị trí 0-->7 bằng hàm laybyte(binary,vitri) Sau khi lấy bit ở vị trí thì nhân với 2^vitri ở đó, rồi cộng dồn với thập phân. |
Trích:
đệ nghĩ phải là 0b00000001 --> 0b00000010 --> 0b00000100..mới đúng chứ nhỉ? cám ơn huynh!! bạn cũng có thể dùng lệnh rotate_left hay rotate_right trong CCS C.cũng với cách tương tự như huynh trên làm.bạn tạo một vòng lặp trong đó cho "and" & với 0x01 rồi lấy mũ tương ứng và cộng dồn vào.nếu giá trị của bạn nằm trong vòng 16bit thì tạo 1 biến 16 bit cho giá trị muốn đổi và cứ cho vòng lặp 16 lần. hy vọng mình nghĩ đúng và giúp ích cho bạn!! |
Uh, mình wên mất, không nhìn kỹ, tại copy từ chương trình cũ lúc xưa. HIHI
|
Múi giờ GMT. Hiện tại là 05:39 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam