• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評論-173  文章-70  trackbacks-0

            符號擴展和截斷的幾點認識:

            1.      符號擴展。。

               short int a = -4;

               short int b = 8;

               print_binary(a);

               print_binary(b);

               unsigned short int c = a; //類型轉換

               unsigned int d = a;

               print_binary(c);

               print_binary(d);

               return 0;

            結果是:

            11111111 11111100

            00000000 00001000

            11111111 11111100

            11111111 11111111 11111111 11111100

            請按任意鍵繼續. . .

             

            從結果可以看到:

            1.類型轉換時不改變位的標志的。

            2.      符號擴展,將一個有符號的擴展的話是符號擴展。從short擴展到int,由于是負數,所以符號擴展,前面的都是111111……

             

             

            2.截斷處理:

            int a = -4;

               short int b = a;

               int c = 4;

               short int d = c;

               print_binary(a);

               print_binary(b);

               print_binary(c);

               print_binary(d)

            結果是:

            11111111 11111111 11111111 11111100

            11111111 11111100

            00000000 00000000 00000000 00000100

            00000000 00000100

            請按任意鍵繼續. . .

            發現了,截斷高位,不管符號,都要截斷高位的部分。

             

            3.乘法和除法:

            當存儲數據的位數不足以存儲乘積的時候,會造成截斷誤差,通過截斷,得到我們的結果不是想要的結果:看下例:

            char a = 120;

               print_binary(a);

               char c = 120;

               print_binary(c);

               char d = a * c;

               cout << (short)d << endl;

               print_binary(d);

               int e = a * c;

               cout << e << endl;

               print_binary(e);

               return 0;

             

            結果是:

             

            01111000

            01111000

            64

            01000000

            14400

            00000000 00000000 00111000 01000000

            請按任意鍵繼續. . .

            看到了沒有,對于一個char類型的數據,如果將兩者的乘積還是保存為char,那么就有可能發生截斷,產生誤差。此例即為說明,而如果將結果用int來保存,可以看到完整的位表示,然后具體的截斷也知道了。此時就可以得到正常的結果,因為有足夠的位,沒有造成損失。。

             

            posted on 2009-10-08 12:38 deercoder 閱讀(1658) 評論(0)  編輯 收藏 引用 所屬分類: 深入理解計算機系統
            伊人久久精品影院| 亚洲国产小视频精品久久久三级 | 久久99久久99小草精品免视看| 国产精品久久新婚兰兰| 欧美性猛交xxxx免费看久久久| 国产精品美女久久久久av爽| www亚洲欲色成人久久精品| 秋霞久久国产精品电影院| 精品乱码久久久久久夜夜嗨| 久久亚洲高清综合| 亚洲国产一成久久精品国产成人综合| 久久久无码精品亚洲日韩软件| 亚洲七七久久精品中文国产| 成人综合久久精品色婷婷 | 一本综合久久国产二区| 久久久久亚洲AV无码专区首JN| 久久精品国产色蜜蜜麻豆| 久久婷婷五月综合色奶水99啪 | 久久久青草青青国产亚洲免观| 久久亚洲精品无码aⅴ大香| 无码人妻精品一区二区三区久久| 久久精品黄AA片一区二区三区| 51久久夜色精品国产| 一97日本道伊人久久综合影院| 久久精品人人槡人妻人人玩AV | 亚洲中文字幕伊人久久无码| 色综合久久久久综合体桃花网| 久久99国产精品一区二区| 久久久久久久久久免免费精品| 人妻无码αv中文字幕久久| 夜夜亚洲天天久久| 伊人久久大香线蕉av不卡| 国产成人精品久久亚洲| 日本WV一本一道久久香蕉| 91久久精品视频| 久久人人爽人人爽人人片AV不| 精品久久久久一区二区三区| 精品国产VA久久久久久久冰| 三级片免费观看久久| 久久综合九色综合精品| 人妻丰满AV无码久久不卡|