回覆列表
  • 1 # 使用者3402880249840

    補碼的定義:

    正數的補碼等於正數的原碼;

    負數的補碼為其原始碼除符號位不動,其餘各位變反再加1。

    比如,十進位制數35和-1在8位機中的補碼錶示為:

    x1=35, x2=-1;

    因為x1>0,所以[x1]補=[x1]原=0010 0011;

    因為x2<0,所以[x2]原=1000 0001;

    [x2]補=1111 1110+1=1111 1111;

    對於機器來說,它記錄的只是補碼本身:0010 0011和1111 1111,也就是說機器並不知道這段補碼是有符號數還是無符號數,但是當你使用高階語言編寫程式,定義了int或者unsigned int,那麼就會根據相應的定義,認為這段機器碼的第一位是數值位或者符號位。

    其中,64位程式上的C語言整型資料型別的典型取值範圍為

    int:-2 147 483 648 ~ 2 147 483 647

    unsigned int:0 ~ 4 294 967 295

    希望回答對你有幫助。

    參考資料:

    1.《C語言與程式設計(高等學校規劃教材)》曹計昌//盧萍//李開,電子工業出版社

    2.《Computer Systems: A Programmer"s Perspective(深入理解計算機系統》by Randal Bryant

  • 中秋節和大豐收的關聯?
  • 怎樣做一個讓人喜歡的老人?