2017-3-22
有符號(hào)數(shù)據(jù)的表示法:
? ? ? ? ? ? ?源碼,反碼和補(bǔ)碼
為什么需要這個(gè)知識(shí)點(diǎn)按脚?
? ? ? ? ? ? ?A因?yàn)橛?jì)算機(jī)在操作的時(shí)候,都是采用數(shù)據(jù)對(duì)應(yīng)的二進(jìn)制的補(bǔ)碼來計(jì)算的
我準(zhǔn)備用原碼敦冬,反碼辅搬,補(bǔ)碼來表示+7和-7
正數(shù)的原碼最高位是0,負(fù)數(shù)的原碼最高位是1脖旱,其他位是數(shù)值位堪遂。
+7 :原碼: 0000111
-7 ?: 原碼: 1000111
正數(shù)的反碼與原碼相同介蛉,負(fù)數(shù)的反碼與原碼符號(hào)相同,數(shù)值為取反溶褪,就是1變0币旧,0變1。
+7 :反碼0000111
-7 ?:反碼1111000
補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼相同猿妈,負(fù)數(shù)的補(bǔ)碼是在反碼的基礎(chǔ)上加1吹菱。
+7 :補(bǔ)碼:0000111
-7 :補(bǔ)碼1111001
練習(xí):
1已知某數(shù)X的原碼為10110100B,試求X的補(bǔ)碼和反碼 ?
? ? ? ? ? ? 符號(hào)位 ? ? ? ? ? ? 數(shù)值位
補(bǔ)碼: ? ? ? ?1 ? ? ? ? ? ? ? 1001100
反碼: ? ? ? ? 1 ? ? ? ? ? ? ? 1001011
2已知某數(shù)X的補(bǔ)碼為11101110B,試求其原碼
? ? ? ? ? ? ? ? ? ? ? ? ?符號(hào)位 ? ? ? ? ? ? 數(shù)值位
可以先求反碼: ? ? 1 ? ? ? ? ? ? ? ? ?1101101
原碼: ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? 0010010
定義變量的格式是:
數(shù)據(jù)類型 變量名=初始化值;
關(guān)鍵字
標(biāo)識(shí)符
基本數(shù)據(jù)類型轉(zhuǎn)換:普通的轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換
布爾類型永遠(yuǎn)無法和其他的轉(zhuǎn)換彭则,因?yàn)閎oolean的值只有true和false毁葱。
普通轉(zhuǎn)換:
普通轉(zhuǎn)換是只能從小的數(shù)據(jù)類型轉(zhuǎn)換成大的數(shù)據(jù)類型。
強(qiáng)制轉(zhuǎn)換:
? ? ? ? ? 從大的數(shù)據(jù)類型到小的數(shù)據(jù)類型贰剥。
? ? ? ? ? ?目標(biāo)數(shù)據(jù)類型 變量=(目標(biāo)數(shù)據(jù)類型)(被轉(zhuǎn)換的數(shù)據(jù))
注意:不要隨意使用強(qiáng)制轉(zhuǎn)換,因?yàn)樗[含精度損失問題筷频。
一個(gè)有趣的小例子:
問:下述兩句的區(qū)別蚌成?
float f1=(float)12.345;
float f2=12.345F;
答:第一個(gè):第一句因?yàn)?2.345所以是double類型,然后一個(gè)強(qiáng)制轉(zhuǎn)換凛捏,是截取掉double多余的字節(jié)后的float類型担忧。
看第二個(gè):第二個(gè)添加了一個(gè)F,所以其本身就是一個(gè)float類型坯癣。