欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言中unsignedinta=-10,這種寫法是否正確?-創(chuàng)新互聯(lián)

?在學(xué)習(xí)C語言的時候偶爾看到了一個這樣的代碼,unsigned int a=-10;乍一眼看上去這不就是錯的嗎?一個負數(shù)怎么能夠放到一個無符號整形里面去。如果你這樣想,那你就有必要看看我這篇文章了。

武侯ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

?首先我們需要了解一個數(shù)據(jù)是怎么存儲的,就比如說需要存儲這個-10,首先就需要創(chuàng)建一個變量a,創(chuàng)建變量a,需要在棧區(qū)開辟一塊內(nèi)存空間,而因為計算機只認識二進制的數(shù)據(jù),所以這個-10需要先轉(zhuǎn)換成二進制的形式,換句話說,在數(shù)據(jù)存儲到內(nèi)存之前數(shù)據(jù)自身就已經(jīng)準(zhǔn)備好了存放到內(nèi)存所需要的格式了,所以數(shù)據(jù)存儲根本就不關(guān)心把數(shù)據(jù)存到的那個變量的類型是什么,反正我就準(zhǔn)備好了一個二進制的補碼給你,你給我存進去,你是什么類型根本就不影響我這個數(shù)據(jù)的內(nèi)容,因為在放進內(nèi)存之前我就已經(jīng)準(zhǔn)備好了,那如果這樣說的話,這個unsigned int 類型在這里有什么意義呢?為什么還要寫這個類型呢?

?雖然這個unsigned int 在數(shù)據(jù)存進去的時候沒有什么作用,但是它肯定有自己的作用的,它的作用其實體現(xiàn)在取出數(shù)據(jù)的時候,當(dāng)你的變量是signed int類型的時候,編譯器會把內(nèi)存中的這個數(shù)據(jù)當(dāng)作有符號數(shù)處理,即取出的時候會按照原碼,反碼,補碼的規(guī)則把這個補碼轉(zhuǎn)化成原碼,(原碼,反碼,補碼的轉(zhuǎn)換規(guī)則在文章結(jié)尾)得到的就是原碼就是1000 0000 0000 0000 ...1010,其中第一位看作符號位,1表示這個數(shù)是負數(shù),所以取出來的數(shù)就是-10,而如果你的變量是ungigned int 類型的時候,那么編譯器就會把內(nèi)存中的這個補碼看成是無符號的,即第一位也看成是有效位,而且無符號數(shù)的原碼,反碼,補碼是一樣的,所以翻譯出來的原碼是1111 1111 1111 1111 ...? 1111 0110了,所以取出來的數(shù)是4294967286。

? 總結(jié):

? 變量存的過程:

? 字面數(shù)據(jù)必須先轉(zhuǎn)成補碼,再放入空間當(dāng)中,所以,所謂符號位,完全看數(shù)據(jù)本身是否攜帶+-號,和變量是否有符號無關(guān)。

? 變量取的過程:

? 取數(shù)據(jù)一定要先看變量本身類型,然后才決定要不要看最高符號位,如果不需要,直接二進制轉(zhuǎn)成十進制,如果需要,則需要轉(zhuǎn)成原碼,然后才能識別。(當(dāng)然符號位在哪里,又要明確大小端)

?所以unsigned int a=-10這種寫法并沒有錯誤。你學(xué)會了嗎?

補充:

原碼,反碼,補碼轉(zhuǎn)換規(guī)則:

正數(shù)和無符號數(shù)的原碼,反碼,補碼是一樣的,無需轉(zhuǎn)換。而負數(shù)需要轉(zhuǎn)換。

原碼>反碼>補碼

原碼的符號位不變,其他位按位取反得到反碼,反碼加一得到補碼。

補碼>原碼

方法一:補碼減一,再符號位不變,其他位按位取反得到原碼。

方法二:補碼再做一遍從原碼變成補碼的步驟,即補碼的符號位不變,其他位按位取反(需要注意的是這里得到的結(jié)果并不是反碼),得到的結(jié)果加一也能得到原碼。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:C語言中unsignedinta=-10,這種寫法是否正確?-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.chinadenli.net/article12/ccpddc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序定制開發(fā)搜索引擎優(yōu)化企業(yè)建站面包屑導(dǎo)航微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管