Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Chuyển đổi cơ số của số thực trong lập trình C?

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    54

    Wink Chuyển đổi cơ số của số thực trong lập trình C?

    Ông thầy của e có cái đề:
    Chuyển đổi 1 số thực sang cơ số khác. mà e có mấy cái thắc mắc, mong đc giải đáp:
    1. Khi chuyển về cơ số 2, phần nguyên thì ko nói, còn phần thực, là nhân mãi cho 2. Nhưng mà khi chuyển ngược lại, cái phần thực đó, e chẳng biết làm ren.
    vd: 3.75 -> 11.11 khi đổi ngược lại e chẳng biết :(
    2. Cho e hỏi mấy cơ số khác, có số âm ko ạ. vi dụ -123.23 đổi sang cơ số 8 thì làm ren ạ

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    1. Chuyển về hệ cơ số 2 nhân 2 mãi làm gì cho mệt. mất thời gian
    Chuyển xuôi
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3.  
    4.  
    5. int _nhiphan(unsigned n)
    6. {
    7.     n>>1?_nhiphan(n>>1):0;
    8.     printf("%d",n&1);
    9. }
    10. void nhiphan(int n)
    11. {
    12.     unsigned *x=(unsigned *)(void*)&n;
    13.     _nhiphan(*x);
    14. }
    15. void nhiphan(float n)
    16. {
    17.     unsigned *x=(unsigned *)(void*)&n;
    18.     _nhiphan(*x);
    19. }
    20. void nhiphan(double n)
    21. {
    22.      float a=float(n);
    23.      unsigned *x=(unsigned *)(void*)&a;
    24.     _nhiphan(*x);
    25. }
    26. int main()
    27. {
    28.     nhiphan(-4.4);
    29.     system("pause");
    30. }
    cách 2 : chỉ áp dụng với số tự nhiên, chuyển số sang hệ cơ số bất kì
    C++ Code:
    1. void chuyendoi(unsigned so,unsigned he)
    2.     {
    3.         if (so>=he) chuyendoi(so/he,he);
    4.         printf("%c",(so%he)["0123456789ABCDEF"]);
    5.            
    6.     }



    Chuyển ngược
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. int _chuyentn(char *b)
    5. {
    6.     int result=0;
    7.     for(int i=0;i<strlen(b);i++)
    8.     {
    9.         result|=b[i]-'0';
    10.         result<<=1;
    11.     }
    12.     return result;
    13. }
    14.  
    15. float chuyentn(char *b)
    16. {
    17.       int a=_chuyentn(b);
    18.       return *(float *)(void*)&a;
    19. }
    20. int main()
    21. {
    22.     cout<<chuyentn("111100111");
    23.     system("pause");
    24. }


    2. Chưa có tiêu chuẩn nào dùng hệ bát phân mã hóa số thực dấu chấm động cả. nhưng có thể làm như này


    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. template <class T>
    5. void batphan(T n)
    6. {
    7.      printf("%o",n);
    8.  
    9. }
    10. int main()
    11. {
    12.     batphan(3.4);
    13.     system("pause");  
    14. }


    Tất cả các code trên chỉ dùng kiểu dữ liệu 32 bít
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    10 2009
    Bài viết
    2

    Tớ Dân mới học nên cũng tham gia 1 tí
    cái này tớ dùng danh sách liên kết đơn các bạn có thể chuyển đổi từ cơ số thập phân và chuyển sang hệ cơ số từ 2 -> 16:

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<alloc.h>
    4. #include<stdlib.h>
    5. typedef struct NP
    6. {unsigned char bit;
    7. struct NP *next;
    8. }CoSo;
    9. CoSo *dinh=NULL;
    10. int main()
    11. {
    12.   CoSo *p;
    13.   long n; int k;
    14.   unsigned char du;
    15.   printf("\n nhap vao 1 so he thap phan:");
    16.   scanf("%ld",&n);
    17.   printf("\n nhap vao he so mun chuyen(2->16):");
    18.   scanf("%d",&k);
    19.   do
    20.   { du=n%k;
    21.     n/=k;
    22.     if((p=(CoSo*)(malloc(sizeof(CoSo))))==NULL)
    23.     {printf("\nKo du RAM");
    24.      exit(-1);
    25.      }
    26.     else
    27.     {p->bit=du;
    28.     p->next=dinh;
    29.     dinh=p;
    30.     }
    31.   }while(n!=0);
    32.   printf("\nso tren doi voi co so %d la:",k);
    33.   while(dinh!=NULL)
    34.   {
    35.   if(dinh->bit<10)
    36.   printf("%d",dinh->bit);
    37.   else
    38.   switch(dinh->bit)
    39.    {case 10:{printf("A");break;}
    40.    case 11:{printf("B");break;}
    41.    case 12:{printf("C");break;}
    42.    case 13:{printf("D");break;}
    43.    case 14:{printf("E");break;}
    44.    case 15:{printf("F");break;}
    45.    }
    46.  
    47.   p=dinh;
    48.   dinh=dinh->next;
    49.   free(p);
    50.   }
    51.   getch();
    52.   return 0;
    53. }
    dịch = turbo C nhé

  4. #4
    Ngày gia nhập
    09 2010
    Bài viết
    17

    C Code:
    1. #include<conio.h>
    2. #include<stdio.h>
    3. void chuyenma(int n,int cs)
    4. { int gt;
    5.    if(n)
    6.    { gt=n%cs;
    7.       n=n/cs;
    8.      
    9.       chuyenma(n,cs);
    10.       printf("%c",gt<9 ? gt+48:gt+54);
    11. }
    12. }
    13.  main()
    14.  { int n,cs;
    15.   printf("nhap n ");
    16.   scanf("%d",&n);
    17.   printf(" nhap cs ");
    18.   scanf("%d",&cs);
    19.   chuyenma(n,cs);
    20.   getch();
    21. }
    dùng đệ qui đẻ đổi mọi hệ cơ số nè

  5. #5
    Ngày gia nhập
    12 2010
    Nơi ở
    Hà Nội
    Bài viết
    137

    Code của anh cũng chỉ đổi được số dương thôi à? Nhập số âm thì kết quả ra sổ chéo với dấu mũ thôi!
    Freelancer, free coder, free tester.
    Nhận hợp tác viết app, viết midlet khi free time.
    Tình trạng: Siêu bận!

  6. #6
    Ngày gia nhập
    09 2010
    Nơi ở
    nơi bắt đầu của sự sống
    Bài viết
    21

    Mặc định Chuyển đổi cơ số của số thực trong lập trình C?

    ban hathetrinh oi, mình ko hiểu đoạn này của bạn: if(n)
    { gt=n%cs;
    n=n/cs;

    chuyenma(n,cs);
    printf("%c",gt<9 ? gt+48:gt+54);

  7. #7
    Ngày gia nhập
    01 2012
    Nơi ở
    Hà Tĩnh
    Bài viết
    25

    Mặc định xuannam2620

    Trích dẫn Nguyên bản được gửi bởi quan92_cn2 Xem bài viết
    ban hathetrinh oi, mình ko hiểu đoạn này của bạn: if(n)
    { gt=n%cs;
    n=n/cs;

    chuyenma(n,cs);
    printf("%c",gt<9 ? gt+48:gt+54);
    bạn ấy dùng bảng mã ASCII ấy mà



Các đề tài tương tự

  1. Load Image trong file word(đã chuyển thành binary trong csdl) lên trình duyệt
    Gửi bởi Mr.BiBi trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-12-2013, 08:45 AM
  2. Trả lời: 0
    Bài viết cuối: 07-08-2012, 05:12 PM
  3. Trả lời: 20
    Bài viết cuối: 27-02-2012, 12:05 AM
  4. ADO.NET Từ giá trị bool trong CSDL chuyển thành tên trong DataGridViewTextColumn
    Gửi bởi tamthientai trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-12-2011, 10:31 PM
  5. Chuyển đổi thành hàm việc chuyển chữ Hoa trong C++
    Gửi bởi quan_pc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 20-06-2011, 07:15 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn