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

Đề tài: Dấu Âm được biểu thị bằng bit nào?

  1. #1
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    Mặc định Dấu Âm được biểu thị bằng bit nào?

    anh em chắc đều biết trong 1 bảng mã ancii thì có thể biểu diễn đựoc 256 ký tự,trong đó có 128 ký tự chuẩn và 128 ký tự như ampha,beta( không gõ các ký hiêu này được )
    vậy anh em cho mìn hỏi là dấu âm nó ghi ở bit thứ mấy( bình thừong 1 ký tự cần 8 bit để biểu diễn mà )

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Ví dụ số int 8 bytes thì 31 bits đầu là giá trị, bit cuối 1 là âm, 0 là dương. http://en.wikipedia.org/wiki/Integer_(computer_science)

  3. #3
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    OK,nhưng int trong máy tính 32 bit là 4 byte cơ không phải 8 bytes

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    Theo kiến thức nông cạn của mình thì bạn đang sai căn bản . byte để lưu dữ liệu là đúng nhưng mã ascii là cái qui định lưu ký tự trong khi cái bạn đang hỏi là số => pó tay
    Nếu ký tự dạng ascii thì bạn quy định như trên , còn nếu là số thì chả có ascii nào hết . 1 byte gồm 8 bit , mỗi bit lưu được 1 giá trị 0 hoặc 1 => 1 byte lưu được 256 ký tự. Ví dụ kiểu Int8 thì để lưu số âm , nó vặt bit cuối để lưu , chỉ lưu 7 bit đầu .
    Nếu Int16 thì nó lưu 15 bit đầu là giá trị , bit cuối là dấu . Cứ như vậy , 32 bit thì nó lưu dấu ở bit 32 , thế thôi

    Còn nữa không phải cái nào cũng có âm dương , tùy theo cách quy định mà sẽ có âm dương hay không ví dụ kiểu char làm gì có âm dương , kiểu uint , ushort ... làm gì có âm dương . Nếu kiểu uint (trong c# dùng 32 bit) nó sẽ lưu toàn bộ 2^32 giá trị int từ 0 -> 2^32-1
    Đã được chỉnh sửa lần cuối bởi tienlbhoc : 18-12-2008 lúc 07:03 PM.
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  5. #5
    No Avatar
    ngocbig Khách

    vậy anh em cho mìn hỏi là dấu âm nó ghi ở bit thứ mấy( bình thừong 1 ký tự cần 8 bit để biểu diễn mà )
    Thật sự mình chưa hiểu hết bạn đang muốn hỏi gì. Thứ hai là bạn hỏi về kiến trúc nào? Mỗi hệ kiến trúc nó có cách biểu diễn dữ liệu trong bộ nhớ khác nhau. Trong hệ Intel32 thì đơn vị nhỏ nhất của bộ nhớ là byte gồm 8 bit. Vd cho số: 11110110 thì bit đầu tiên bên trái được gọi là Most significant bit (MSB) và bit đầu tiên từ phía phải được gọi là Least Significant bit (LSB). Khi đó thì MSB sẽ là bit dùng để quy định dấu, và 11110110 là số âm (MSB là 1) còn 01110110 là số dương (MSB là 0) (Tất nhiên là nếu ta hai byte đó là được coi là các số signed)



    Regards.

  6. #6
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mặc định Dấu Âm được biểu thị bằng bit nào?

    Chính xác là nó lưu số đối ( nói số đối cho tổng quát ) ở dạng bù hai ( đảo tất cả các bit sau đó cộng thêm 1 ). Sở dĩ lưu như vậy là để đảm bảo hai nguyên tắc:
    1. a+ -(a) =0
    Ta sẽ minh họa nguyên tắc này trong máy tính qua một ví dụ cụ thể:
    số 56 biểu diễn bằng chuỗi 8 bit: 00111000, số bù 2 của nó là 11000111+1= 11001000
    Khi đó : 56+ (-56) = 1 000 000 000 ( kết quả này luôn đúng với mọi a).
    Vì thanh ghi chỉ có 8 bit nên kết quả trả về sẽ chỉ là 0, ngoài ra một cờ báo tràn sẽ được bật ( nhưng không gây lỗi ).
    2. -(-a)=a
    Vì a + (-a) = 1 000 000 000 ( kết quả ở trên ) nên -a= 1000 000 000 -a
    -(-a) = 1000000000- ( 1000 000 000 -a ) = a ( đpcm ).

    Đây là cách tính trên các hệ máy tính có thanh ghi 16 bit ( mỗi thanh ghi gồm 2 thanh cao và thấp ), còn cách tính trên thanh ghi 32 hay 64 thì mình không biết. Kiến thức mình lâu không cập nhật nên có gì sai sót mong được chỉ giáo.

  7. #7
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    OK,mình nói hơn lộn đó,lẽ ra mình phải nói là số int thì bit thứ mấy để biểu diễn dấu của số (h thì biết là bít đầu tính từ trái sang roài ),nghe các bạn nói mình cũng hiểu ra rồi,cảm ơn các bạn

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

    Trích dẫn Nguyên bản được gửi bởi tienlbhoc Xem bài viết
    còn nếu là số thì chả có ascii nào hết . 1 byte gồm 8 bit , mỗi bit lưu được 1 giá trị 0 hoặc 1 => 1 byte lưu được 256 ký tự.
    vậy tại sao em gõ chữ A trong Notepad rồi SAVE lại thì thấy nó có kích thuoc là 1 byte?
    gõ 2 chu a thì là 2 byte?

  9. #9
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Thì tại mỗi ký tự là 1 byte, 2 chữ a tất nhiên 2 byte. Đừng hiểu nhầm ý của tienlbhoc, không phải gõ 256 chữ a là tổng cộng 1 byte đâu.

  10. #10
    Ngày gia nhập
    05 2009
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi longtom Xem bài viết
    vậy tại sao em gõ chữ A trong Notepad rồi SAVE lại thì thấy nó có kích thuoc là 1 byte?
    gõ 2 chu a thì là 2 byte?
    1byte chỉ lưu trữ được 1 ký tự
    2^8 = 256 là 256 trường hợp khác nhau của dãy số 00000000 .-->... 11111111 với mỗi sự thay đổi 0 <->1 thì sẽ biêu diễn được 1 số khác.
    vd: 00000000 là số 0
    00000001 là số 1
    .......................
    11111111 là số 256.
    ==> hỏi: về vấn đề đảo bit trong C. Toán tử luận lý đảo bit trong C xem như là số nhị phân 32 bit
    vd: số 10 là 1010 : đúng hơn là 0000.0000.0000.0000.0000.0000.0000.1010
    viết ngắn gọn là 1010 vì số 0 ở bên trái không có giá trị
    và toán tử đảo bít của 10 là ~10 hay (~1010)
    khi đó sẽ được hiểu là: 1111.1111.1111.1111.1111.1111.1111.0101
    giá trị này sẽ là -11
    (vậy bit biểu diễn dấu âm ở đâu trong dãy trên, con số 11 do đâu mà tạo thành - 11 tức là 1011)
    (trích từ giáo trình EPC của Aptech)

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