Luận Văn Chạy & phân tích trình LZW 12

Thảo luận trong 'Kinh Tế Chính Trị' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    172
    Điểm thành tích:
    0
    Xu:
    0Xu
    Chạy & phân tích trình LZW 12


    ​ LỜI NÓI ĐẦU

    Ngày nay, cùng với sự phát triển không ngừng của khoa học và công nghệ thì máy tính đóng vai trò không thể thiếu trong cuộc sống xã hội loài người.
    Việc trao đổi thông tin của con người trong tất cả các ngành, các lĩnh vực của đời sống ngày càng trở nên cấp thiết và quan trọng, chính vì thế mà các thiết bị thông tin mới liên tục ra đời nhằm đáp ứng các yêu cầu này. Tuy nhiên, vì một số phần mềm đòi hỏi rất nhiều bộ nhớ để hoạt động trao đổi thông tin nên người ta đã nghĩ ra một phương pháp nhằm giải quyết vấn đề này, đó là phương pháp nén dữ liệu mà vẫn bảo toàn thông tin.
    Nén dữ liệu là một kỹ thuật quan trọng trong rất nhiều lĩnh vực khác nhau. Chính nhờ có kỹ thuật nén dữ liệu mà ngày nay chúng ta có những phương tiện truyền thông hiện đại phục vụ cho cuộc sống như truyền hình cáp, điện thoại, thư điện tử . và rất nhiều khía cạnh khác. Do đó kỹ thuật nén dữ liệu ngày càng được quan tâm và phát triển nhiều hơn. Ở Việt Nam, hầu hết các trường Đại học đều quan tâm đến việc nén dữ liệu và điều này được thể hiện ở việc đưa kỹ thuật nén trở thành môn học chính thức trong giai đoạn chuyên ngành .
    Trong phạm vi môn học “ Mã - mã nén” . Tôi đưa ra bài phân tích trình LZW 12 nhằm mô phỏng thuật toàn kỹ thuật nén dữ liệu.
    Tuy nhiên do trình độ còn hạn chế, thời gian và kinh nghiệm chưa nhiều, nên bài phân tích này không thể tránh khỏi sự sai sót trong quá trình phân tích. Do vậy tôi rất mong được sự quan tâm tham gia góp ý Thầy Cô cũng như cùng toàn thể các bạn Sinh Viên để bài phân tích này rõ dàng hơn.
    Cuối cùng Em xin chân thành cảm ơn thày Nguyễn Lê Anh đã hướng dẫn và giảng dạy Em trong thời gian qua.


    Giải thích stdio.h

    Các hàm thư viện I/O được định nghĩa trong STDIO.H chỉ làm việc ở mức byte, đó là các hàm putc(), getc(), fread(), fwrite(). Chúng ta cần viết các thủ tục vào/ra ở mức bit.
    Cấu trúc BIT_FILE được định nghĩa như sau:
    typedef struct bit_file
    {
    FILE *file;
    unsigned char mask;
    int rack;
    int pacifier_counter;
    }
    BIT_FILE;
    Các thành phần "rack" và "mask" được dùng để quản lý theo bit. Rack để chứa byte dữ liệu hiện thời được đọc từ tệp hay được ghi vào tệp. Mask chứa 1 bit cờ để đánh dấu vị trí của bit đang được xử lý trong byte.
    Các hàm
    BIT_FILE *OpenInputFile(char *name)
    BIT_FILE *OpenOutputFile(char *name)
    void CloseInputBitFile(BIT_FILE *bit_file)
    void CloseOutputBitFile(BIT_FILE *bit_file)
    được dùng để mở tệp hay đóng tệp khi ghi hay đọc. Các hàm này tương đối đơn giản nên chúng tôi không gì thích gì thêm.
    Hai kiểu thủ tục I/O được định nghĩa trong BITIO.H. Hai thủ tục đầu dùng để đọc và ghi mỗi bit một lần. Hai thủ tục khác dùng để đọc hay ghi nhiều bit một lần. Đó là các hàm:
    void OutputBit( BIT_FILE *bit_file, int bit)
    void OutputBits( BIT_FILE *bit_file, unsigned long code, int count)
    int InputBit( BIT_FILE *bit_file)
    unsigned long InputBits( BIT_FILE *bit_file, int bit_count)
    void OutputBit( BIT_FILE *bit_file, int bit)
    Trong BITIO.H, bit cao nhất trong byte được đọc hay ghi là bít đầu tiên, bit nhỏ nhất trong byte là bít được xử lý cuối. Điều đó có nghĩa là phần tử mask ban đầu sẽ được đặt bằng 0x80. Nếu bit được ghi vào tệp là 1 thì thực hiện lệnh
    bit_file->rack |= bit_file->mask,
    sau đó mask được dịch sang trái 1 bit bằng lệnh
    bit_file->mask >>=1.
    Nếu mask=0 tức là đã tích được đủ 8 bit thì lúc đó mới ghi vào tệp bằng lệnh
    putc(bit_file->rack, bit_file->file)
    Cứ xử lý được 2048 byte thì một ký tự (là dấu chấm) lại được đưa ra màn hình. Sau đó bắt đầu một rack mới bằng các lệnh
    bit_file->rack = 0;
    bit_file->mask = 0x80;


     
Đang tải...