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

Đề tài: Giúp em về vấn đề bit trong vc++ ạ...

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

    Question Giúp em về vấn đề bit trong vc++ ạ...

    - Thầy em có giao 1 bài tập về nhà là: Chuyển số int thành dạng binary nhưng không được dùng phương pháp /2 hoặc các hàm có sẵn trong máy. (Gợi ý là dùng UNION).
    - Theo em tìm hiểu thì bộ nhớ trong máy vi tính được quản lý theo dạng ô nhớ, mỗi ô nhớ gồm 8 bit và BIOS sẽ đánh địa chỉ riêng cho từng ô nhớ. Như vậy đâu có cách này truy xuất vào từng bit trong 1 ô nhớ đâu ??? Do các bit trong ô nhớ làm gì có địa chỉ ?
    - Em cũng đã search trên MSDN của microsoft thì admin bên đó nói là mình chỉ có thể truy xuất data trên memory thấp nhất là ở dạng byte, tức ở dạng 8bit thôi. :((.
    - Vậy em phải giải bài này làm sao ạ?

    Thân,
    Cám ơn nhiều ạ.

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

    Em đã giải quyết xong rồi ạ. Mod xóa thread này dùm em ạ. Cảm ơn MOD ạ.

    Thân,

  3. #3
    Ngày gia nhập
    04 2008
    Nơi ở
    Ha Noi
    Bài viết
    5

    Bạn Duy làm thế nào mà chuyển được về dạng nhị phân, xin cho đoạn code được không a ? Cảm ơn bạn.

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

    Code:
    #include <stdio.h>
    #include <conio.h>
    union test1
    {
    	unsigned int i;
    	struct
    	{
    		unsigned char b0:1;
    		unsigned char b1:1;
    		unsigned char b2:1;
    		unsigned char b3:1;
    		unsigned char b4:1;
    		unsigned char b5:1;
    		unsigned char b6:1;
    		unsigned char b7:1;
    		unsigned char b8:1;
    		unsigned char b9:1;
    		unsigned char b10:1;
    		unsigned char b11:1;
    		unsigned char b12:1;
    		unsigned char b13:1;
    		unsigned char b14:1;
    		unsigned char b15:1;
    		unsigned char b16:1;
    		unsigned char b17:1;
    		unsigned char b18:1;
    		unsigned char b19:1;
    		unsigned char b20:1;
    		unsigned char b21:1;
    		unsigned char b22:1;
    		unsigned char b23:1;
    		unsigned char b24:1;
    		unsigned char b25:1;
    		unsigned char b26:1;
    		unsigned char b27:1;
    		unsigned char b28:1;
    		unsigned char b29:1;
    		unsigned char b30:1;
    		unsigned char b31:1;
    	}BIT;
    	
    };
    void main()
    {
    	test1 u;
    	printf("Nhap so can chuyen:");
    	scanf("%i",&u.i);
    
    	printf("\n");
    	printf("%d",u.BIT.b0);
    	printf("%d",u.BIT.b1);
    	printf("%d",u.BIT.b2);
    	printf("%d",u.BIT.b3);
    	printf("%d",u.BIT.b4);
    	printf("%d",u.BIT.b5);
    	printf("%d",u.BIT.b6);
    	printf("%d",u.BIT.b7);
    	printf("%d",u.BIT.b8);
    	printf("%d",u.BIT.b9);
    	printf("%d",u.BIT.b10);
    	printf("%d",u.BIT.b11);
    	printf("%d",u.BIT.b12);
    	printf("%d",u.BIT.b13);
    	printf("%d",u.BIT.b14);
    	printf("%d",u.BIT.b15);
    	printf("%d",u.BIT.b16);
    	printf("%d",u.BIT.b17);
    	printf("%d",u.BIT.b18);
    	printf("%d",u.BIT.b19);
    	printf("%d",u.BIT.b20);
    	printf("%d",u.BIT.b21);
    	printf("%d",u.BIT.b22);
    	printf("%d",u.BIT.b23);
    	printf("%d",u.BIT.b24);
    	printf("%d",u.BIT.b25);
    	printf("%d",u.BIT.b26);
    	printf("%d",u.BIT.b27);
    	printf("%d",u.BIT.b28);
    	printf("%d",u.BIT.b29);
    	printf("%d",u.BIT.b30);
    	printf("%d",u.BIT.b31);
    	_getch();	
    }
    -Code này mình nghĩ là hơi dở, mình sẽ tìm cách hay sau. .
    - À, cái này sau khi chuyển thành dạng nhị phân bạn đọc dãy từ phải sang trái nhé.
    -Ví dụ:
    Chương trình sẽ chuyển 8 thành 00010000000000000000000000000000 nghĩa là 1000. Chương trình mình hiện chỉ chuyển được các số nguyên không dấu 32bit thôi. Nghĩa là các số < 2^32-1.
    Thân,
    Đã được chỉnh sửa lần cuối bởi khanhduy301 : 20-04-2008 lúc 09:10 AM.

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

    bạn có thể làm như sau chia lấy phần dư số int cần chuyển cho 2 ,muốn chuyển thành 8 bit thì chia 8 lần,32 bit thì chia 32 lần,...,kết quả lưu trong 1 mảng kiểu bool ,chuyển số âm thì làm tương tự nhưng bit đầu tiên là dấu ,0 là dương,1 là âm hoặc ngược lại(có nghĩa giảm đi 1 lần chia).

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

    Mặc định Giúp em về vấn đề bit trong vc++ ạ...

    - Cách đó mình viết từ hồi mới làm quen C++. Chứ giờ thì mình sẽ code thế này .

    Code:
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int a = 0;
    	printf_s("Input: ");
    	scanf_s("%i",&a);
    	for(int i = 0; i < 32; i++)
    		printf_s("%d",(bool)(2147483648 & (a << i)));
    	_getch();
    	return 0;
    }
    Thân,

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

  1. Hàm trong C Giúp đỡ về đọc FILE trong 1 folder riêng biệt trong lập trình C.
    Gửi bởi itus1994 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 29-12-2013, 09:04 PM
  2. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  3. Bài tập C++ help giúp em sữa lỗi trong hàm tìm kiếm sách và gọi hàm trong chuơng trình quản lí sách
    Gửi bởi Mr.vu112 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 17-11-2011, 07:21 PM
  4. Bài tập C++ Giúp mình viết 1 đoạn code hoàn chỉnh trong C++ về random trong giới hạn
    Gửi bởi sai211dn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 06-10-2011, 08:01 PM
  5. Hàm trong C++ không nằm trong main vẫn chạy đúng. Giải thích giúp?
    Gửi bởi tuvan1011 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 02-09-2009, 12:58 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