最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

數(shù)據(jù)類型轉(zhuǎn)換一定會產(chǎn)生符號擴展嗎?

2023-04-01 17:41 作者:yidadakimasi  | 我要投稿

這里面有兩個基礎(chǔ)概念,第一個是強制類型轉(zhuǎn)換,第二個是符號擴展。

為什么要有類型轉(zhuǎn)換?

因為編譯器不能處理不同類型之間的運算。要么是兩個整數(shù)運算,要么是兩個浮點數(shù)運算,總之類型必須是一樣的。如果是一個整數(shù)和一個浮點數(shù)運算,那么要么把整數(shù)轉(zhuǎn)換位浮點數(shù),要么把浮點數(shù)轉(zhuǎn)換位整數(shù)。

類型轉(zhuǎn)換是啥樣子的?顯著特征就是賦值符號左右的兩個數(shù)據(jù)類型不一致

int a='m';

int b=(char)a;

?

什么是符號擴展,為什么要有符號擴展這件事情?

符號擴展就是把小存儲空間中的數(shù)據(jù)放到大存儲空間的時候,需要把大存儲空間多余的部分填充數(shù)據(jù),填充什么呢??就填充數(shù)據(jù)的符號位。

假設(shè)1100這是一個有符號的四位二進制位,符號位是1,轉(zhuǎn)換成八位二進制就是1111 1100

?假設(shè)0011這是一個有符號的四位二進制位,符號位是0,轉(zhuǎn)換成八位二進制就是0000 0011

那么,為什么要有符號擴展這個東西呢??符號擴展發(fā)生在數(shù)據(jù)類型轉(zhuǎn)換的時候,即,只要你看到?類似int b=(char)a;?這種轉(zhuǎn)換類型的時候就可能發(fā)生。類型轉(zhuǎn)換,我們是希望轉(zhuǎn)換前后的數(shù)據(jù)是相同的,如果不相同就不叫轉(zhuǎn)換了,叫改變。

抓換前是1100,轉(zhuǎn)換后是1111 1100?這兩個代表的真值是一樣的。

轉(zhuǎn)換前是0011,轉(zhuǎn)換后是0000 0011?這兩個代表的真值也是一樣的。


回到我們的問題,數(shù)據(jù)類型轉(zhuǎn)換一定會產(chǎn)生符號擴展嗎?

不一定的。比如把unsigned int?轉(zhuǎn)換為int?或者把int?轉(zhuǎn)換為unsigned int?都不會發(fā)生符號擴展,因為這兩種數(shù)據(jù)類型占用的空間是一樣的,只需要按照各自的格式讀寫數(shù)據(jù)就可以完成轉(zhuǎn)換。




數(shù)據(jù)類型轉(zhuǎn)換一定會產(chǎn)生符號擴展嗎?的評論 (共 條)

分享到微博請遵守國家法律
泌阳县| 丰台区| 龙游县| 河北省| 广西| 富民县| 盐城市| 贵定县| 太谷县| 凤阳县| 来安县| 太仓市| 阿拉善右旗| 呼和浩特市| 蕲春县| 淮滨县| 遂川县| 富宁县| 新干县| 阆中市| 偃师市| 五指山市| 华坪县| 顺平县| 基隆市| 北辰区| 南阳市| 渑池县| 贞丰县| 巨野县| 锡林郭勒盟| 万宁市| 平山县| 韶关市| 石城县| 巩留县| 清水河县| 思茅市| 沙湾县| 渝中区| 铜鼓县|