Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Biểu diễn nhị phân của số chấm động?

  1. #1
    Ngày gia nhập
    04 2010
    Nơi ở
    Tây ninh
    Bài viết
    3

    Mặc định Biểu diễn nhị phân của số chấm động?

    Bài 1. Viết chương trình nhập vào số chấm động. Hãy xuất ra biểu diễn nhị phân từng thành phần (dấu, phần mũ, phần trị) của số chấm động vừa nhập
    Ví dụ:
    Nhập vào số chấm động (32-bit): 6
    Biểu diễn nhị phân tương ứng: 0 10000001 10000000000000000000000
    Nhập vào số chấm động (32-bit): -12.625
    Biểu diễn nhị phân tương ứng: 1 10000010 10010100000000000000000
    Nhập vào số chấm động (32-bit): 0.1015625
    Biểu diễn nhị phân tương ứng: 0 01111011 10100000000000000000000
    Nhập vào số chấm động (32-bit): 0.1
    Biểu diễn nhị phân tương ứng: 0 01111011 10011001100110011001101
    Nhập vào số chấm động (32-bit): 0
    Biểu diễn nhị phân tương ứng: 0 00000000 00000000000000000000000
    Bài 2. Viết chương trình nhập vào biểu diễn nhị phân của số chấm động. Hãy xuất ra biểu diễn thập phân tương ứng
    Ví dụ:
    Dãy nhị phân: 0 10001000 01101100001000000000000
    Số chấm động (single) tương ứng: 728.25
    Dãy nhị phân: 1 01000110 01101011000000000000000
    Số chấm động (single) tương ứng: -9.83913471531 × 10-18
    Dãy nhị phân: 0 01111011 10011001100110011001101
    Số chấm động (single) tương ứng: 0.1
    Dãy nhị phân: 0 11111111 00000000000000000000000
    Số chấm động (single) tương ứng: +
    Dãy nhị phân: 0 11111111 10000000000000000000000
    Số chấm động (single) tương ứng: NaN
    Bài 3: Dùng 2 hàm đã viết để khảo sát các câu hỏi:
    - 1.3E+20 có biểu diễn nhị phân ra sao
    - Số float nhỏ nhất lớn hơn 0 là số nào? Biểu diễn nhị phân của nó?
    - Những trường hợp nào tạo ra các số đặc biệt (kiểu float) (viết chương trình thử nghiệm và giải thích kết quả):
    - Số vô cùng (inf)
    - Số báo lỗi NaN
    - Ví dụ: X – (+), (+) – (+), X/0, 0/0, /, sqrt(X) với X<0,…(Tham khảo thêm một số trường hợp trong slide 13 bài giảng Số chấm động)

    Bài 4: Khảo sát các trường hợp sau đây (viết chương trình thử nghiệm và giải thích kết quả):
    1. Chuyển đổi float -> int -> float.Kết quả như ban đầu ?
    2. Chuyển đổi int -> float -> int. Kết quả như ban đầu ?
    3. Phép cộng số chấm động có tính kết hợp ?
    (x+y)+z = x+(y+z)
    Với i là biến kiểu int, f là biến kiểu float
    4. i = (int) (3.14159 * f);
    5. f = f + (float) i;
    6. if (i == (int)((float) i)) { printf(“true”); }
    7. if (i == (int)((double) i)) { printf(“true”); }
    8. if (f == (float)((int) f)) { printf(“true”); }
    9. if (f == (double)((int) f)) { printf(“true”); }

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

    câu 1 và câu 2
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. using namespace std;
    4.  
    5. void _(unsigned n)
    6. {
    7.     n>>1?_(n>>1):0;
    8.     printf("%d",n&1);
    9. }
    10. void ftob(float n) //float to binary
    11. {
    12.     _(*(unsigned *)(void*)&n);
    13. }
    14. float btof(char *str)
    15. {
    16.     int x=0;
    17.     for(int i=0;i<strlen(str);i++)
    18.         x|=str[i]-48,x<<=1;
    19.     return *(float *)(void*)&x;
    20. }
    21.    
    22.  
    23.  
    24. void main()
    25. {
    26.     float x=20;
    27.     ftob(x);
    28.     cout<<endl;
    29.     cout<<btof("00100000110100000000000000000000");
    30.    
    31.     system("pause");
    32. }

    câu 3

    C Code:
    1. void main()
    2. {
    3.     float x=1.3E+20;
    4.     ftob(x);
    5.    
    6.  
    7.     system("pause");
    8. }  [/PHP]Số float nhỏ nhất lớn hơn 0 là số nào? Biểu diễn nhị phân của nó?:
    9. [PHP]#include <iostream>
    10.  
    11. int main()
    12. {
    13.     float x = 0;
    14.     char *p = (char*)&x;
    15.     (*p) |= 1;
    16.     std::cout<<x<<std::endl;
    17.  
    18.     return 0;
    19. }

    00000000 00000000 00000000 00000001

    còn lại tự túc
    ^_,^

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

    Bùi Tấn Quang

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

    Code:
    void _(unsigned n)
    {
        n>>1?_(n>>1):0;
        printf("%d",n&1);
    }
    void ftob(float n) //float to binary
    {
        _(*(unsigned *)(void*)&n);
    }
    Nếu mình dùng con trỏ void ftob(float *n) thi gọi hàm thế nào??

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

    chạy thì đúng mà ko hiu~ code

    bro langman có thể giải thix giúp dòng này
    PHP Code:
    x|=str[i]-48,x<<=1

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

    langman đâu roài bạn giải thích đi sao ko trả lời mọi người dậy. Còn bài ngược lại ai hỉu hem. Thanks langman nhìu mình cũng đang tìm hiểu câu hỏi này nè.
    Đã được chỉnh sửa lần cuối bởi zhaolong : 21-10-2010 lúc 06:37 PM.

  6. #6
    Ngày gia nhập
    03 2011
    Bài viết
    7

    Question Lập trình về dấu chấm động

    có ai có code bài 1, bài 2 d6e4 hiểu không cho mình xin. tk trước

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    31

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    câu 1 và câu 2
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. using namespace std;
    4.  
    5. void _(unsigned n)
    6. {
    7.     n>>1?_(n>>1):0;
    8.     printf("%d",n&1);
    9. }
    10. void ftob(float n) //float to binary
    11. {
    12.     _(*(unsigned *)(void*)&n);
    13. }
    14. float btof(char *str)
    15. {
    16.     int x=0;
    17.     for(int i=0;i<strlen(str);i++)
    18.         x|=str[i]-48,x<<=1;
    19.     return *(float *)(void*)&x;
    20. }
    21.    
    22.  
    23.  
    24. void main()
    25. {
    26.     float x=20;
    27.     ftob(x);
    28.     cout<<endl;
    29.     cout<<btof("00100000110100000000000000000000");
    30.    
    31.     system("pause");
    32. }

    câu 3

    C Code:
    1. void main()
    2. {
    3.     float x=1.3E+20;
    4.     ftob(x);
    5.    
    6.  
    7.     system("pause");
    8. }  [/PHP]Số float nhỏ nhất lớn hơn 0 là số nào? Biểu diễn nhị phân của nó?:
    9. [PHP]#include <iostream>
    10.  
    11. int main()
    12. {
    13.     float x = 0;
    14.     char *p = (char*)&x;
    15.     (*p) |= 1;
    16.     std::cout<<x<<std::endl;
    17.  
    18.     return 0;
    19. }

    00000000 00000000 00000000 00000001

    còn lại tự túc
    anh ơi. đọc không hiểu gì hết.anh có thể giải thích giùm em được không. em không hiểu các câu lệnh dùng để làm gì hết.huhu

    sống trên đời cần có một tấm lòng

  8. #8
    Ngày gia nhập
    01 2011
    Bài viết
    46

    trong C++ có thể sử dung câu lệnh system ("pause");
    được k nhỉ

  9. #9
    Ngày gia nhập
    06 2012
    Bài viết
    1

    Anh có thể giải thích thêm được không ,code khó hiểu quá

  10. #10
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Không hiểu chỗ nào thì
    - Đọc lại cho kỹ lần nữa xem có vỡ ra được gì không. Có thể cần phải xem lại ý nghĩ của các toán tử
    - Thử debug để xem các biến thay đổi như thế nào trong quá trình thực hiện các câu lệnh

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

  1. MS SQL Lỗi SQL Server 2005 express chạy chậm khi chạy report?
    Gửi bởi dongtrien trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 26-03-2013, 09:12 PM
  2. Q-Smart S15 thiết kế chắc chắn chạy android giá rẻ
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 04:07 PM
  3. Trả lời: 4
    Bài viết cuối: 28-06-2012, 03:35 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