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ố 19 kết quả

Đề tài: [c/c++]Địa chỉ?

  1. #1
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Wink [c/c++]Địa chỉ?

    Giả sử mình nhập vô một số nguyên;
    int key;
    cin>>key;//giả sử nhập vào số 1985
    Vậy làm sao để in ra màn hình địa chỉ của 1;9;8;5.
    Tức là OS sẽ cấu thành địa chỉ nhớ của số 1985 như thế nào?
    (giả sử là một số kiểu float, long , char nữa chẳng hạn).
    (cái này không biết hà, hix hix.)
    Và truy xuất đến địa chỉ của từng ký tự(hổng biết gọi sao,giả sử như trên đó)
    như thế nào.?(Có hình minh họa càng tốt).
    Thanks.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    Giả sử mình nhập vô một số nguyên;

    Vậy làm sao để in ra màn hình địa chỉ của 1;9;8;5.
    Tức là OS sẽ cấu thành địa chỉ nhớ của số 1985 như thế nào?
    (giả sử là một số kiểu float, long , char nữa chẳng hạn).
    (cái này không biết hà, hix hix.)
    Và truy xuất đến địa chỉ của từng ký tự(hổng biết gọi sao,giả sử như trên đó)
    như thế nào.?(Có hình minh họa càng tốt).
    Thanks.
    cái này chỉ cần khi nhập du liệu như bạn nói ta thêm toán tử & trước số cần nhập
    vd:
    int a,b;
    printf("\n nhap du lieu can address:");
    scanf("%d %d",&a &b);
    printf(" address cua du lieu vua nhap la : %u %u",&a,&b);// dấu & sẽ nhập địa chỉ thay vì ta để a sẽ nhập ký tự vừa nhập
    thế là xong với giá trị u sẽ in ra số gì đó nguyên hoặc gì gì đó mình cũng không nhớ lắm cậu có thể tra trong sách good luck!!!!

  3. #3
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    to comeonbaby:
    Bạn hiểu nhầm ý của tôi rồi.Cái này chỉ là in ra địa chỉ của biến a và b thôi.
    Như thế này nhé(với code trên của tôi)
    1.tôi nhập vào một số 2367
    2.Bạn hãy nói cho tôi biết là các chữ số 2,3,6 và 7(trong số 2367) nó được cấu thành trong bộ nhớ như thế nào.Tức nó được tổ chức như một mảng không?
    Còn khi nhập số 2367 thì số này có địa chỉ là hiển nhiên rồi.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    2397 = 0x093F.
    Giả sử số 2397 được lưu tại điạ chỉ 0xBADDF00D, thì byte thấp 0x3F sẽ lưu tại 0xBADDF00D, byte cao 0x09 sẽ lưu tại 0xBADDF00E. Kiểu tổ chức này gọi là little-endian, dùng trên hệ máy PC x86, x64 chúng ta.

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Cảm ơn bạn TQN.Tuy nhiên mình chưa hiểu rõ lắm khi phân biệt byte thấp và cao.Thế này nhé:
    1.Kiểu char có bộ nhớ là 1byte tức nó lưu trữ được 1 ký tự.(True or false?).
    Theo mình thì đúng.Nếu quy đổi nó với 1byte= 8bit ,vậy nó mã hóa thế nào để lưu được các ký tự khác nhau?
    (Mong bạn chỉ rõ ).(*)
    Sâu thêm một chút nhé: 1 ký tự char khi đó có bộ nhớ là 1byte=8bit.nếu lấy 2E8( pow(2,8)) =256.Tức kiểu char có thể mã hóa được 256 ký tự khác nhau.Mình hiểu là vậy.(2*)
    Vậy giữa *2* phải giải thích như thế nào?
    2.Vậy với một số nguyên thì nó sẽ mã hóa như thế nào ?(hay long,float...)
    3.Với bài trên, bạn có thể chỉ rõ các số int sau: 1 ; 23; 329;2489;35632;
    Thì các ký tự trong từng số đó được cấu thành như thế nào?(hix, đọc bài của bạn thì hiểu cái địa chỉ nhưng chưa phân biệt cụ thể ,rõ ràng được.)
    Tạm thời vậy đã.Để mình xem lại sách rồi hỏi tiếp.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    Mặc định [c/c++]Địa chỉ?

    kiểu chả là 1 byte = 8 bit . Nên lưu được tới 8 bit (0 hoặc 1) chứ ko phải 1 byte là lưu 1 ký tự như bạn nói.
    nothing is impossible

  7. #7
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Tìm một cuốn sách về Assembly, đọc rồi sẽ hiểu thế nào là bit, byte, word, dword..., lowbyte, highbyte, cách tổ chức của chúng trong memory. Không dư đâu, sẽ rất thiết thực và vô cùng có ích cho cậu sau này đấy. Những kiến thức này là kiến thức cơ bản, coder phải biết.

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Với một số kiểu int thì nó lưu trữ trên máy tính bằng một vùng nhớ 2 byte liên tiếp.
    Nếu là ký tự thì nó sẽ được lưu trữ tại một vùng nhớ 1 byte.
    Dr có viết chương trình để lấy LowByte và HighByte của một số nguyên và chương trình sẽ cho biết địa chỉ của 2 byte này.

    Code:
    #include<stdio.h>
    #define LowByte(value) value % 0x0100
    #define HighByte(value) value / 0x0100
    int main()
    {
     int a=1985;
     char *b;
     b=(char*) &a;
     b++;
     printf("Low byte is:%x Adress: %x \nHigh byte is:%x Adress: %x \n",LowByte(a),b,HighByte(a),&a);
     return 0;
    }
    Về cách tổ chức bộ nhớ trên máy tính thì có lẽ bạn nên xem lại. Vì đây là những kiến thức rất cơ bản đó.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  9. #9
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi Dreaminess Xem bài viết
    Về cách tổ chức bộ nhớ trên máy tính thì có lẽ bạn nên xem lại. Vì đây là những kiến thức rất cơ bản đó.
    Cảm ơn Dr.Hix chẳng nhớ cái này có được học không nữa, nhưng mình sẽ xem lại sau.
    Một vấn đề nữa được đặt ra:
    Giả sử ở trên là số int: 1985
    Chúng ta biết được adress của lowbyte và hightbyte.
    Vậy chúng ta có thể truy nhập trực tiếp vào adress đó để đổi vị trí ký tự 1 với 5 và ký tự 9 với 8 không?
    Hoặc một số khác là 12 (int) thì có thể đổi 2 và 1 được không?
    Đã được chỉnh sửa lần cuối bởi Alviss : 22-11-2007 lúc 08:00 PM.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    Cảm ơn Dr.Hix chẳng nhớ cái này có được học không nữa, nhưng mình sẽ xem lại sau.
    Một vấn đề nữa được đặt ra:
    Bạn hãy xem lại đi khi nào hiểu có lẽ bạn sẽ không muốn đặt câu hỏi nữa đâu.

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