亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

深入解析unsigned int 和 int

2020-01-26 15:56:53
字體:
來源:轉載
供稿:網友

就如同int a;一樣,int 也能被其它的修飾符修飾。除void類型外,基本數據類型之前都可以加各種類型修飾符,類型修飾符有如下四種:
1.signed----有符號,可修飾char、int。Int是默認有符號的。
2.unsigned-----無符號,修飾int 、char
3.long------長型,修飾int 、double
4.short------短型,修飾int

我們主要來看一下signed和unsigned與int之間的聯系與區別。
什么叫做有符號,什么叫做無符號
這個問題其實很簡單,比如:5和-5,5沒有符號,-5有符號。簡單吧。但是在計算機中的這種符號可不簡單。我們分別來看一下:
在說明有符號和無符號的區別之前,我們必須先知道溢出是怎么回事,因為有無符號的根本原因可以說就是因為數據出現了溢出現象導致的。

溢出:
我們知道數據在計算機中以二進制存儲,并且占據一定的空間,而這個空間屬于計算機分配的空間。
計算機給int分配32位或者16位(不同電腦可能不同)的空間,既然空間有限,那么數值就會有限制,就會存在最大值與最小值這一說,比如:假設int類型的分配16位,無符號類型的最大值為1111 1111 1111 1111(16個1),也就是65535,如果超過了65535,這就叫做溢出,那該怎么辦? 如果要輸出65536,那將會輸出個什么東西呢? 下面和大家一起看一下:

疑問:有的讀者會問:65535這么小啊,我記得自己在輸出比65535大好多的數也能夠輸出啊。
解答: 那就是有無符號的定義和你電腦編譯器的原因了。64位的電腦和32的電腦可是不一樣的哦。而且int占幾個字節是與電腦編譯器有關的。不過現在大部分電腦int占4個字節,即32位,那么他的最大值可是32個1(二進制)左右的數量級,你實驗過這么大的數嗎?

1.無符號整型(unsigned  int)
(1)我們都知道整型是4個字節(有些編譯器不同,可能會是2個),即32位,無符號整型當然也為32位。
(2)既然是32位,無符號整型的取值是32個0~32個1,即:0~4294967295
(3) 我們舉個例子:32位有點長,所以我們拿16位的unsigned short int 來舉例。
short int 是16位的,無符號的范圍是0~65535
就拿十進制的32767(以下的所有舉例均拿這個數字來說事了)來說,它的二進制為:
               0111 1111 1111 1111
對于無符號的整型32767來說,它的二進制的最高位稱為數據位,即那個0就是數據位,數據位是要參與運算的,如果我們把0改成1,即16個1,它的十進制就是65535(就是2的15次方+2的14次方...一直加到2的0次方),這是不同于有符號整型的。
(4) 為了進行理解(3)中的含義,做一個程序說明:

復制代碼 代碼如下:

#include <stdio.h>
main()
{
    unsigned short int a=32767,b=a+1;//定義短整型無符號
    printf("a=%u/nb=%u/n",a,b);//以無符號輸出
}




定義的時候a=32767,也就是0111 1111 1111 1111,輸出的依然是32767,
a+1=32768, 二進制為1000 0000 0000 0000,輸入依然為32768。
根據(3)中講解的,無符號整型的二進制最高位為數據位,數據位為0為1都是按照正常來算的。

2.有符號整型((signed)int)(1)int類型默認是有符號的,所以int實際上是signed int ,我們通常省略signed
(2)有符號整型也是32位。
(3)它的取值范圍就與無符號整型不同了。它的范圍是-2147483648~2147483647這個范圍可以理解為無符號整型的一半變成了負數。

32位有點長,所以我們拿16位的short int 來舉例。
short int 是16位的,有符號的范圍是-32768~32767

這個時候可能就有人發問了,32768用二進制表示為1000 0000 0000 0000,那么這個負的32768的負號又怎么理解呢?看下面
(4)舉個例子;
還是以32767為例子,它的二進制為:
      0111 1111 1111 1111
對于有符號整型32767來說,它的二進制最高位稱為符號位(而不是數據位了),符號位顧名思義就是決定正負號的,規則:0是正,1為負。
(5)列舉一個程序理解(4)的內容

復制代碼 代碼如下:

#include <stdio.h>
main()
{
   short int a=32767,b,c,d;//定義無符號類型。
b=a+1;
c=a+2;
d=a+3;
   printf("a=%d/nb=%d/nc=%d/nd=%d/n",a,b,c,d);
}

可以看出此時的結果竟然是這個樣子的。為什么呢?怎么回事?
其實在計算機中,負數是并不存在的,它是以二進制補碼的形式表示和存放。什么是補碼呢?

(6)什么是補碼,補碼的運算。
我們還是列舉一個簡單的例子吧!就用-6.

我們經過以上的學習已經知道負數的符號位為1,所以:
 (1)-6的二進制: 1000 0000 0000 0110(稱為原碼,原碼是計算機顯示給我的)
 (2)對原碼求反碼:1111 1111 1111 1001(稱為反碼,保持符號位不變,將原碼中的0變1,1變0)
 (3)對反碼加1:1111 1111 1111 1010(稱為補碼,補碼是計算機中存儲負數的形式)
在計算機中,如果存儲的二進制是1111 1111 1111 1010,那么顯示在我們前臺的十進制數字就是-6。即:負數在計算機中是以該負數的二進制的補碼形式存儲的。

(7)了解了什么是補碼后,再來看我們上述說的那個程序:
  32767的二進制為:0111 1111 1111 1111
我們來計算一下c的值為什么會等于-32767。
c=32767+2,c的二進制為:1000 0000 0000 0001(32767的二進制+2),c的這個二進制是在計算機中存儲的補碼,需要將它轉換為原碼,也就是將c的二進制數減一再取反。得到的二進制原碼為:1111 1111 1111 1111。我們已經說過,符號位為1,表示負值,并不參加運算,所以此二進制的十進制為:-32767。
但是,上述中,c的原碼的確是1111 1111 1111 1111,c在計算機中存儲的補碼也的確是1000 0000 0000 00010。但是-32767的由來卻有另一種理解,c的補碼是16位,32位編譯器中有32位的二進制,也就是說在16位補碼的前面還有(32-16=16)位的虛位數,并不屬于計算機給short int分配的空間,但是這16位的位數當數表示正時為0,當數表示負數時為1。并且前16位的數字全部都與二進制倒數第8位的數字一致。也就是說:
  c 的補碼是   1...1 1000 0000 0000 0010(1..1表示16個1)
我們可以這樣計算:-2的7次方+2的1次方=-32767,這種理解普遍被大眾所接受,而且避免了原碼的概念。

(8)通過程序也可以發現一個規律,int的取值范圍是-32768~32767,把頭尾連接起來形成一個環就可以了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区免费视频| 亚洲国产又黄又爽女人高潮的| 亚洲午夜未删减在线观看| 91久久精品日日躁夜夜躁国产| 久久青草福利网站| 久久网福利资源网站| 国产a级全部精品| 黑人巨大精品欧美一区二区免费| 日韩精品在线电影| 91亚洲国产成人久久精品网站| 亚洲国产97在线精品一区| 亚洲欧美一区二区三区情侣bbw| 狠狠躁夜夜躁人人爽超碰91| 91免费看片在线| 久久中文字幕国产| 精品香蕉一区二区三区| 国产v综合v亚洲欧美久久| 欧美成aaa人片免费看| 欧美日韩高清在线观看| 欧美巨乳美女视频| 中文字幕免费精品一区高清| 91色精品视频在线| 欧美激情网站在线观看| 精品国偷自产在线视频99| 国产97在线|日韩| 久久艳片www.17c.com| 亚州欧美日韩中文视频| 欧美电影《睫毛膏》| 国产精品jvid在线观看蜜臀| 国产日韩一区在线| 热99在线视频| 亚洲综合小说区| 福利精品视频在线| 亚洲三级 欧美三级| 91视频88av| 精品久久久久久亚洲精品| 亚洲白拍色综合图区| 精品国产一区二区三区在线观看| 日韩视频在线一区| 日韩中文第一页| 国产精品久久久久久五月尺| 国产精品成人一区| 成人激情电影一区二区| 一本久久综合亚洲鲁鲁| 韩国美女主播一区| 午夜精品一区二区三区av| 欧洲成人免费视频| 亚洲最新视频在线| 成人激情在线播放| 亚洲视频在线免费观看| 亚洲精品日韩激情在线电影| 97免费中文视频在线观看| 亚洲高清免费观看高清完整版| 国产日韩精品入口| 亚洲精品国产成人| 98精品国产高清在线xxxx天堂| 日韩电影免费观看在线观看| 久久成人综合视频| 日本一区二区在线免费播放| 亚洲91精品在线观看| 色偷偷av一区二区三区| 中文字幕视频在线免费欧美日韩综合在线看| 精品欧美一区二区三区| 88国产精品欧美一区二区三区| 亚洲影院色在线观看免费| 欧美丰满少妇xxxxx| 久久久久久有精品国产| 在线电影欧美日韩一区二区私密| 欧美电影在线观看| 一区二区三区视频观看| 九九精品视频在线观看| 国产成人精品免高潮费视频| 成人xxxx视频| 国产极品精品在线观看| 色综合视频一区中文字幕| 九九热99久久久国产盗摄| 亚洲精品欧美日韩| 日韩成人激情视频| 日韩在线视频观看| 久久国产一区二区三区| 亚洲free性xxxx护士hd| 亚洲在线观看视频| 亚洲国产精品成人精品| 91国产视频在线| 欧美在线一级va免费观看| 在线视频日本亚洲性| 国外成人免费在线播放| 国产精品成av人在线视午夜片| 日本久久亚洲电影| 98视频在线噜噜噜国产| 国产性色av一区二区| 精品少妇v888av| 欧美在线一级视频| 91亚洲国产成人精品性色| 欧美美女15p| 亚洲91精品在线观看| 97在线精品国自产拍中文| 欧美视频在线免费| 国色天香2019中文字幕在线观看| 国产男女猛烈无遮挡91| 国产日本欧美一区| 成人中心免费视频| 日韩美女视频中文字幕| 国产高清视频一区三区| 国产精品久久久久久亚洲调教| 欧美日韩一区二区在线| 亚洲一区二区三区在线免费观看| 国产香蕉97碰碰久久人人| 欧美成人剧情片在线观看| 国产精品视频26uuu| 欧美日韩午夜激情| 九九久久久久99精品| 精品国产福利视频| 精品偷拍各种wc美女嘘嘘| 成人在线视频福利| 日韩av网站大全| 欧洲日本亚洲国产区| 国产午夜精品一区理论片飘花| 国产成人一区二| 91精品在线一区| 在线观看91久久久久久| 91地址最新发布| 久久综合网hezyo| 国产精品日韩专区| 亚洲国产精品久久91精品| 国产一区二区三区在线观看视频| 久久久久久久久综合| 国产精品情侣自拍| 日韩精品视频免费专区在线播放| 中文字幕无线精品亚洲乱码一区| 精品国产区一区二区三区在线观看| 欧美激情欧美激情在线五月| 欧美成人精品在线视频| 日韩av免费看网站| 日韩av中文字幕在线| 一区二区三区回区在观看免费视频| 久久久久久午夜| 91在线视频成人| 国产视频精品va久久久久久| 国产精品视频一区二区高潮| 亚洲国产日韩欧美在线99| 欧美激情一区二区三级高清视频| 激情懂色av一区av二区av| 97香蕉超级碰碰久久免费的优势| 国内精品伊人久久| 日韩电影大全免费观看2023年上| 亚洲成人a**站| 成人在线视频网| 在线观看欧美日韩| 久久91超碰青草是什么| 中文字幕日韩欧美精品在线观看| 日韩欧美国产网站| 97香蕉超级碰碰久久免费的优势| 久久伊人精品视频| 国产欧亚日韩视频| 国产精品美女久久久免费| 亚洲一区中文字幕在线观看| 久久99国产精品久久久久久久久| 久久精品免费电影| 国产亚洲xxx| 中文字幕av一区二区三区谷原希美| 国产精品久久999| 97国产suv精品一区二区62| 日韩在线观看免费高清完整版|