Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 31 kết quả

Đề tài: Chuyển hệ 10 sang hệ 2 trong lập trình C

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Mặc định Chuyển hệ 10 sang hệ 2 trong lập trình C

    Mình giải giúp bạn bài chuyển từ hệ 10 sang hệ 2 nhé, chuyển ngược lại thì bạn tự làm, bài dưới đây mình dùng stack để giải:
    C Code:
    1. #define max 100 // khai báo kích thước tối đa của stack
    2. int stack[max];
    3. int top=-1 //Khởi tạo stack rỗng
    4. void Push(int stack,int &top,int x) // đẩy phần tử vào stack
    5. {
    6.      if (top==max-1)
    7.        {
    8.               puts("Stack da day");
    9.               exit(1);
    10.        }
    11.      else
    12.         {
    13.                top++;
    14.                stack[top]=x;
    15.          }
    16. }
    17. int Pop(int stack,int &top)  // đẩy phần tử khỏi stack
    18. {
    19.        int tam;
    20.        if (top==-1) return top;
    21.        else
    22.           {
    23.                 tam=stack[top];
    24.                 top--;
    25.                 return tam;
    26.             }
    27. }
    28.  
    29. void Dec2Bin(int n)   // n là số cần chuyển đổi đó
    30. {
    31.       int thuong,du;
    32.       thuong=n;
    33.       while (thuong!=0)
    34.        {
    35.                du=thuong%2;
    36.                push(stack,top,du);
    37.                thuong=thuong/2;
    38.        }
    39.     printf("So nhi phan la:");
    40.     while (top!=-1) printf("%d",pop(stack,top));
    41. }

  2. #2
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Bài làm = stack khá tốt nhưng dài dòng, dùng đệ quy sẽ hiệu quả hơn
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. void dectobin(int n){
    4.      if (n > 0){
    5.         dectobin(n/2);
    6.         cout <<n%2;
    7.      }
    8. }
    9. int main(){
    10.     cout <<"Nhap n: "; int n; cin >>n;
    11.     cout <<"Chuyen co so: "; dectobin(n);
    12.     cout <<endl; system("pause");
    13.     return 0;
    14. }
    Còn việc chuyển ngược lại thì cũng đơn giản
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. int bintodec(int n){
    4.     int s = 0; int pow;
    5.     for (int i = 0;n > 0;++i){
    6.         pow = 1;
    7.         for (int j = 0;j < i;++j) pow *= 2;
    8.         s += pow*(n%10);
    9.         n /= 10;
    10.     }
    11.     return s;
    12. }
    13. int main(){
    14.     cout <<"Nhap n: "; int n; cin >>n;
    15.     cout <<"Chuyen co so: " <<bintodec(n) <<endl;
    16.     system("pause");
    17.     return 0;
    18. }
    Bạn nên nhớ đây là code xét trên trường hợp số nhập vào là đúng, nếu bạn làm 1 chương trình lớn thì phải có các bước kiểm tra dữ liệu nhập vào, nếu ko, chương trình của bạn sẽ chạy sai.
    Bài tập này cực dễ cho những người thích tìm hiểu nhưng lại cực khó cho những người lười tìm hiểu, ngại viết code, ko thích học lập trình và vô cùng lười biếng
    Đã được chỉnh sửa lần cuối bởi huynguyen : 01-02-2007 lúc 12:15 PM.

  3. #3
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Tiện thể mình đố các cậu bài này nha.
    Viết đúng 1 hàm duy nhất thể hiện dạng nhị phân của các số nguyên 1 byte 2 byte 4 byte số thực 2byte số thực 4 byte và một kiểu dữ liệu trừu tượng bất kỳ.
    Đã được chỉnh sửa lần cuối bởi shinichi_haha : 01-02-2007 lúc 08:38 PM.

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Hình như là trong C++ có class liên quan đến nhị phân hay là có hàm nào đấy, ko nhớ rõ lắm, cái này thì chịu, đợi người đố giải đố thoai.

  5. #5
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi shinichi_haha
    Tiện thể mình đố các cậu bài này nha.
    Viết đúng 1 hàm duy nhất thể hiện dạng nhị phân của các số nguyên 1 byte 2 byte 4 byte số thực 2byte số thực 4 byte và một kiểu dữ liệu trừu tượng bất kỳ.
    neverland dùng phép toán & và >> để làm bài này, không biết anh bạn có cho là đúng không nữa?
    void main() // đổi hệ 10 --> 2
    {
    nhập số thập phân n();
    for(i=7;i>=0;i--) //i đi từ 7->0 nghĩa là số này sẽ biểu diễn số np 8 bit
    printf("%d",(n>>i)&1)
    }

    hi hi,mình nghĩ chắc để người ra câu đố giải dùm thôi

  6. #6
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Chuyển hệ 10 sang hệ 2 trong lập trình C

    Đúng rồi, quên mất là cái toán tử dịch chuyển bit

  7. #7
    Ngày gia nhập
    01 2008
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi neverland87 Xem bài viết
    neverland dùng phép toán & và >> để làm bài này, không biết anh bạn có cho là đúng không nữa?
    void main() // đổi hệ 10 --> 2
    {
    nhập số thập phân n();
    for(i=7;i>=0;i--) //i đi từ 7->0 nghĩa là số này sẽ biểu diễn số np 8 bit
    printf("%d",(n>>i)&1)
    }

    hi hi,mình nghĩ chắc để người ra câu đố giải dùm thôi
    mình là newbie chỉ mới học lập trình đc vài tháng thui(đến h khoảng 2 tháng),mấy hum trc thầy cũng có cho cái đề chuyển sang nhị phân như trên.lúc đó mình tìm trên mạng cũng thấy cái code(ngắn gọn) y như vậy nhưng ko hỉu gì hết
    mong các bạn nói rõ hơn về thuật chuyển bít hay dời bít gì gì đó
    "printf("%d",(n>>i)&1)" ==>cái này ý nghĩa là gì vậy các bạn

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Code:
    printf("%d",(n>>i)&1)
    >> là phép dịch phải bit đó bạn . Còn << là phép dịch trái bit . Bạn hiểu như vậy nhe :

    Nếu viết 20<<3 = 20*(2^3)

    Nếu viết 20>>3 = 20/(2^3)

    Dấu & ở đây là phép AND bit . Ví dụ :

    111 &
    010
    kq 010

  9. #9
    Ngày gia nhập
    01 2008
    Bài viết
    4

    hix, mình cũng kô được học về cái bit này, bạn có thể nói cụ thể (hoặc có code nào dễ dễ tí) cho mình xem cái dạng nó làm sao kô
    Ví dụ như bài của bạn: 111&010=010 thì người dùng sẽ nhập vào 2 số dạng nhị phân rồi & nó ---> kq là 1 số nhị phân. Bạn có thể code bài này được kô (Mình kô biết "khai biến" kiểu gì cả).Thanks
    bạn nhiều

    ủa, cái đề tài này được post gần 1 năm rồi à :| (diễn đàn này chất lượng wa' )

  10. #10
    Ngày gia nhập
    12 2007
    Bài viết
    29

    vd bạn code
    printf ("%d",6&2);
    thì nó sẽ xuất ra 2 vì :

    110 -> số 6
    010 -> số 2
    ---
    010 -> số 2

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

  1. Chuyển đổi các kí tự số trong chuỗi sang xâu bit nhị phân
    Gửi bởi phanvanlinhqt trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 0
    Bài viết cuối: 11-11-2013, 07:58 PM
  2. Bài tập C chuyển hệ thập phân sang hệ nhị phân trong lập trình C
    Gửi bởi prime trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 23-12-2012, 09:33 AM
  3. Graphic Chuyển đổi hình ảnh 2D sang 3D trong C#
    Gửi bởi dinhvandong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 19-07-2012, 09:52 AM
  4. Chuyển hệ 10 sang hệ 16 trong C
    Gửi bởi loserit89 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: 17-04-2009, 10:10 PM
  5. Chuyển đổi ảnh 8 bit sang 24 bit trong lập trình C#
    Gửi bởi neverland87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 18-08-2008, 09:52 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