日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Char溢出問題分析

Char溢出問題分析 時間:2017-11-02      來源:未知

直奔主題,先上一道例題,大家思考一下,為什么答案是這個樣子!

下面是linux系統(tǒng)的輸出結(jié)果:

(1)幾點基礎(chǔ)注意

變量定義:是在內(nèi)存中確定變量的位置和大小,即:定義時分配內(nèi)存。例如:int a;

賦值:是在擦除對象當前值,并用新的值代替。例如:a = 2;

初始化:先分配內(nèi)存,再進行賦值操作。

(2)原碼、反碼、補碼

機器數(shù):一個數(shù)在計算機中是以二進制形式存儲的,這個數(shù)就是機器數(shù)。機器數(shù)的高位是符號位,正數(shù)為0,負數(shù)為1。

真值:除了符號位,其余位對應的值是真值。

例如:1000 0001 真值是-1,不是129。

原碼:符號位加上真值的絕對值。

例如:[+1]原碼:0000 0001,[-1]原碼:1000 0001

反碼:正數(shù)的反碼是其本身,負數(shù)的反碼是在原碼的基礎(chǔ)上,符號位不變,其余為取反。

例如:[+1]反碼:0000 0001,[-1]反碼:1111 1110

補碼:正數(shù)的補碼是其本身,負數(shù)的補碼是其反碼加1。

例如:[+1]補碼:0000 0001,[-1]補碼:1111 1111

整型數(shù)據(jù)在內(nèi)存中是以補碼的形式存儲的。要得到負數(shù)的真值需要得到原碼。補碼的補碼就是其原碼。

(3)%d和%x

%d:是有符號位輸出,那么首先看補碼的符號位,是正是負;是正,補碼就是原碼;是負,補碼的補碼才是原碼,也才是輸出結(jié)果。

%x:是16進制數(shù)輸出,輸出時是4字節(jié),32位。如果不夠4字節(jié)要進行擴展,并且高位全部用符號位來填充。

(4)分析計算

char a = 247;

系統(tǒng)分配1個字節(jié)內(nèi)存大小,里面存儲正數(shù)247的補碼,即:1111 0111(正數(shù)的補碼就是原碼)。

%d輸出:首先看高位,變量a是char類型,8位,高位是1,代表是負數(shù),現(xiàn)在內(nèi)存中存儲的是其補碼,要得到輸出的原碼,需要得到現(xiàn)在補碼的補碼(補碼的補碼是原碼),即: 1111 0111 ------ 反碼:1000 1000 ------ 補碼:1000 1001,此時的補碼就是真正的原碼:-9,所以輸出結(jié)果就是-9。

%x輸出:現(xiàn)在存儲的是:1111 0111,即:0xf7,要注意%x是4字節(jié)輸出,此時是char類型,輸出時要進行默認轉(zhuǎn)換,轉(zhuǎn)換成32位,并且高位全部用符號位填充,即:1111 1111 1111 1111 1111 1111 1111 0111,是0xff ff ff f7。

上一篇:FS4412 移植 libiconv庫

下一篇:Qt打包文檔(window平臺)

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 挠中国美女丝袜脚心| la ciociara| 小镇姑娘高清播放| 卢昱晓电视剧| overwatch| 柚柚| 陈昱| 小学智力测试题100题| 迷宫的十字路口讲了什么| 12333电话会引来麻烦| 潇湘影院| 密会电影| 生死搏斗| 韩国电影《真相迷途》演员表| 陈奂生上城| 在灿烂阳光下歌谱完整| 女生宿舍完整版| 张壮| 北京卫视今天节目预告| 妈妈的朋友欧美| 1—36集电视剧在线观看| 鹌鹑图片| 皮皮虾影视| 肥猫正传| 林书宇| 影子人| 聊斋之千年灵狐3姐妹完整版免费观看| 绝顶五秒前| 玫瑰故事演员表名单| 贾宏| 沈月个人简介| 妇女停经前有什么征兆| 老阿姨视频| 大尺度激情戏片段| 烟草甲虫| 曹查理林雅诗电影全集 | 同妻俱乐部| 披萨女孩| 疯狂 电影| 养小动物的作文| 素珍|