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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C\C++不经意间留下的知识空白------有符号数和无符号数

發(fā)布時(shí)間:2025/3/15 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C\C++不经意间留下的知识空白------有符号数和无符号数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C和C++

C和C++應(yīng)該是大多數(shù)工科生最先接觸的兩門(mén)語(yǔ)言,個(gè)人感覺(jué)這兩門(mén)還是挺難的。今天在看面試題時(shí),看到有符號(hào)數(shù)和無(wú)符號(hào)數(shù)時(shí)竟然懵了,這基礎(chǔ)是有多不扎實(shí)啊!

有符號(hào)數(shù)和無(wú)符號(hào)數(shù)

對(duì)于浮點(diǎn)數(shù)來(lái)說(shuō)都是有符號(hào)數(shù),不存在無(wú)符號(hào)數(shù)。所以就拿8位一個(gè)字節(jié)的char類(lèi)型來(lái)說(shuō)一下這個(gè)有符號(hào)數(shù)和無(wú)符號(hào)數(shù)。
首先,對(duì)于無(wú)符號(hào)數(shù)我們知道:8位的話(huà)最大表示255
例:0000 0001 = 1
1111 1111 = 255
對(duì)于有符號(hào)數(shù),我想很多就知道首位表示符號(hào)位,后面怎么表示的都忘了,我就是把這個(gè)忘了,才弄了挺久才搞懂。
首位是1表示負(fù)數(shù),首位是0表示正數(shù)
例:那么-7,我想會(huì)有一部分是這樣表示的1000 0111,很遺憾我開(kāi)始就是這樣,但它是不對(duì)的。
除去符號(hào)位,后面按位取反再加一,這才是負(fù)數(shù)表示方法
還拿-7來(lái)說(shuō),首先第一步:1000 0111 第二步按位取反:1111 1000,第三步加一:1111 1001
所以 -7 = 1111 1001
-8 > 1000 1000 > 1111 0111 > 1111 1000

同時(shí)還有一個(gè)點(diǎn)是無(wú)符號(hào)數(shù)和有符號(hào)數(shù)相加會(huì)自動(dòng)轉(zhuǎn)換成無(wú)符號(hào)數(shù)。
我們來(lái)操作一下-7+7 = 1111 1001 + 0000 0111 = 1 0000 0000,只有八位,溢出,得到結(jié)果為0.符合我們的認(rèn)知 -7+7 = 0
再來(lái)操作一下-8 + 7 = 1111 1000 + 0000 0111 = 1111 1111 = 255 這和我們的常識(shí)是不一樣的。編程時(shí)需要注意。

在編程的過(guò)程中盡量不要無(wú)符號(hào)數(shù)和有符號(hào)直接運(yùn)算。因?yàn)橹虚g會(huì)發(fā)生默認(rèn)的類(lèi)型轉(zhuǎn)換。

總結(jié)

以上是生活随笔為你收集整理的C\C++不经意间留下的知识空白------有符号数和无符号数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。