日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unsigned int + int型结果分析

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unsigned int + int型结果分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

***************************************************

更多精彩,歡迎進入:http://shop115376623.taobao.com

***************************************************


代碼如下:

? ? ? ? “//”后為調試中的結果

unsigned int a = 6; ?//a = 6 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【補碼:0000 ??0000 ??0000 ??0000 ??0000 ??0000 ??0000 ? 0110】

int b = -20; ?//b = -20 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【補碼:1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1110 ??1100】
unsigned int c = a + b; ?//c = 4294967282 ? ? ? ? ? ? 【補碼:1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 0010】

int d = a + b; ?//d = -14 ? ?

【int d = a + b; ?//d = -14:由 ?《補碼:1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 1111 ? 0010》減去1,再取反得到14,保留最高位符號位】

if (a+b>6)
{
printf(">6\n"); ? //進入此判斷,即a+b = c,而非d;
}?
else
{
printf("<=6\n");

}


分析:

機器在數據都是由二進制補碼表示的
正數的補碼就是其本身
負數的補碼是符號位不變各位取反再加一

8位機的話:
int?a?-1; ? ? ? ? ? ? ? ? ? ? ?在機器中1111?1111
unsigned?int?b?1;??????????在機器中0000?0001

如果?a+b?
a就轉化為unsigned?int?但里面的數值是不變的?1111?1111?把他轉化成十進制2^8-1?+?b


總結

以上是生活随笔為你收集整理的unsigned int + int型结果分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。