亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言之進制轉換

發布時間:2020-07-16 04:40:35 來源:網絡 閱讀:723 作者:師趣妮 欄目:編程語言
/*語言中進制表示?:
????二進制表示?:?在二進制數字前面加上0b;
????八進制表示?:?在八進制數字前面加上0;
????十六進制表示?:?在十六進制前面加上0x;
進制轉換?;
????將其他進制轉換成八進制?:?在printf函數中以%o占位;
????將其他進制轉換成十六進制?:?在printf函數中以%x占位;
????在C語言中,沒有占位符可將其他進制轉換成二進制;
????將其他進制轉換成十進制?:?在printf函數中以%i或%d占位;
進制轉換的原理公式?:?假定m為一個十進制數,轉換成nk,nk-1,nk-2,...,n2,n1,n0的l進制數
?????????????????????則?m?=?n0?+?n1?*?l^1?+?n2?*?l^2?+?....?+?nk-2?*?l^(k-2)?+?nk-1?*?l?^(k-1)?+?nk?*?l^k
?????????????????????由上可見,當等式左右兩端同時除以l時,余項為n0,在整數部分除以l則余項為n1,以此類推,便可以得到m的l進制表達
案例:十進制轉換二進制(逆序打印)
#include?<stdio.h>
void?printBin(int?num);
int?main(int?argc,?const?char?*?argv[])?{???
????int?num?=?4;?//?100;
????printBin(num);
????return?0;
}
void?printBin(int?num)
{
????int?zheng?=?num;
????while?(zheng?!=?0)
????{
????????int?yu?=?zheng?%?2;
????????printf("%i",yu);
????????zheng?=?zheng?/?2;
????}
????printf("\n");
}
n為二進制的取值范圍?:?0~2^n?-1
二進制轉八進制?:?三位變一位
二進制轉十六進制?:?四位變一位
原碼?反碼?補碼
????數據內存中均是以補碼形式存儲,正數的原碼,反碼,補碼全部一樣,三碼合一
????原碼?:?最高位為符號位(正數為0,負數為1),其他位則為數字位
????反碼?:?負數的反碼,最高位符號位不變,數字位取反
????補碼?:?負數的補碼,反碼加1
位運算符?:
????按位與?:?&????#數字轉換成二進制后,對應位,全真則真,由此可見,任何數字和1的按位與還是數字本身????#注?:?可用此法結合移位運算進行進制轉換
????按位或?:?|????#數字轉換成二進制后,對應位上,一真則真,由此可見,任何數字和0的按位或還是數字本身
????按位異或?:?^????#數字轉換成二進制后,對應位上,相同則取0,不同則取1.相同的兩個數字按位異或結果為0,且按位異或滿足交換律????#應用?:?交換兩個變量的值
????取反?:?^????#取反操作,是直接對存儲在內存中的補碼進行取反,因此要獲得數字本身,還需將其轉換成原碼之后,再計算
????左移?:?<<????#將二進制整體左移n位,缺位補0,相當于原來的數字乘以2^n
????右移?:?>>????#將二進制除了符號位之外整體右移n位,缺位按照符號位的取值進行補齊,相當于原來的數字乘以2^n
????????#注?:?左移或右移操作均是對補碼進行操作
案例一?:?交換變量的值
????方法一?:
???????int?num1?=?32;
???????int?num2?=?21;
???????int?temp?=?num1?+?num2;
???????num1?=?temp?-?num1;
???????num2?=?temp?-?num1;
????方法二?:
????????int?num1?=?32;
????????int?num2?=?21;
????????int?temp?=?num1?^?num2;
????????num1?=?temp?^?num1;
????????num2?=?temp?^?num1;
案例二?:?進制轉換?:
????方法一(正序打印,完全按照其在內存的存儲方式進行顯示)?:
????????void?printBin(int?num);
????????int?num?=?3;????
????????printBin(num);
????????void?printBin(int?num)
???????{
??????????int?delta?=?31;
??????????for?(int?i?=?delta;i?>=?0;i--)
??????????{
?????????????int?result?=?(num?>>?i)?&?1;
?????????????printf("%i",result);
????????
?????????????if?(i?%?4?==?0)
?????????????{
?????????????????printf("?");
?????????????}
??????????}
???????printf("\n");
???????}
????方法二(逆序打印)?:
????????void?printBin(int?num);
????????int?num?=?3;
????????????printBin(num);
????????????void?printBin(int?num)
????????????{
????????????????int?delta?=?0;
????????????????for(int?i?=?delta;i?<?32;i++)
???????????????{
????????????????????if?(i?%?4?==?0)
???????????????????{
???????????????????????printf("?");
???????????????????}
???????????????????int?result?=?(num?>>?i)?&?1;
???????????????????printf("%i",result);
???????????????}
???????????????printf("\n");
????????????}
????????????#以上兩種方法的缺陷?:?當數字較少,會打印大量無用的0
????????????方法三(改進)?:
?????????????void?printBin(int?num);
?????????????int?num?=?-4;
?????????????printBin(num);
?????????????void?printBin(int?num)
????????????{
????????????????int?count?=?0?;
????????????????while((num?>>?count)?!=?0)
????????????????{
?????????????????????int?result?=?(num?>>?count)?&?1;
?????????????????????printf("%i",result);
?????????????????????count++;
????????????????}
????????????????printf("\n");
???????????}
*/


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄烦县| 海伦市| 乌什县| 康平县| 二连浩特市| 卢龙县| 阳曲县| 卓尼县| 白沙| 康乐县| 凤冈县| 兴义市| 桑日县| 新干县| 铁岭市| 松滋市| 阿拉尔市| 防城港市| 阿克陶县| 肥东县| 鹤山市| 东乡| 南和县| 福清市| 长岛县| 吴川市| 平顶山市| 邓州市| 万宁市| 富宁县| 高州市| 黄石市| 河津市| 民乐县| 长寿区| 平原县| 瓦房店市| 呼图壁县| 永德县| 石城县| 绵竹市|