PDA

View Full Version : các lệnh chuyển từ binary qua decimal


phandinh
10-04-2009, 10:49 PM
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

lequocbao
11-04-2009, 06:48 PM
để làm gì vậy bạn?

manhha2799
12-04-2009, 09:00 AM
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.

phandinh
13-04-2009, 09:25 AM
bạn có thể nói rõ giải thuật được không ? hoặc 1 ví dụ cụ thể CCS.
thanks.

manhha2799
13-04-2009, 09:45 AM
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.

cong1810
13-04-2009, 06:29 PM
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;
}


huynh xem lại dùm đệ đoạn này hen!!
đệ 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!!

manhha2799
14-04-2009, 12:57 AM
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