進制之間的轉換
其他進制轉換為二進制
1、八轉二:123.6,首先,將每一位數字,一分為三。1=001 ?2=010? 3=011 ?? 0.6=110
然后合起來:0010 1001 1.110=1010 011.11(可將整數高位的零省略,小數低位的零不寫)
2、十轉二? 方法一:整數除R取余法,小數乘E取整法:
如:14.875:整數部分除2取余,小數部分乘2取整
整數 14/2? 商7余0? 7/2 商3余1? 3/2 商1余1? 1/2? 余0? ? ? 除到商數零為止?
小數 875 * 2=1.750? 取1? . 075 * 2=1.50 取1? 0.5 * 2=1.0? 取1? 乘到所需要的精度或者積為零為止?
然后? :? 整數從高位(后面)寫,小數從低位(前面)寫。
14.875十進制轉為二進制等于? 1110.111
? 十轉二? 方法二:如? 46 :他最大只能分配 32位字節,46-32=14,最大3
只能分配8個字節,14-8=6,最大只能分配4個字節,4-2=2。到此結束
它們分別是? 2^5 ?2^3 ?2^2 2^1 ?然后分別在 第六位上填個1,第四位上填個1,第三位上填個1,第二位上填1 ?,其他位均是零? :46 十轉二 101110
3、十六轉二:? 84.cf ?一分位為四,規則方法與八轉二相同,? 8=1000? 4=0100? 12=1100? 16=1111
合起來:1000 0100 0100.1100 1111
其他進制轉八進制
1、二轉八 :規則:整數部分 從低位到高位,每三位為一組,最高位不足三位時高位補零,小數從低位到高位,每三位一組,最低位不足三位時低位補零。
1011 1100 011.11=001 011 110 011.110
? ? ? ? ? ? ? =1? 3? 6? 3 . 6
2、十進轉八:(規則和十轉二一致)除R取余法,乘E取整法
25.35 :整數? 25/8 ?商3 ?余1 ?3/8 ?余3 ?除到商數零為止
? ? ? 小數? 0.35
2、十進轉八:(規則和十轉二一致)除R取余法,乘E取整法25.35 :整數? 25/8 ?商3 ?余1 ?3/8 ?余3 ?除到商數零為止? ? ? ? ? ? 小數? 0.35 * 8=2.80? 取2 ?0.8 * 8=6.4 ?取6 ?0.4 * 8=3.2 取3 ?0.2 * 8=1.6 取1 乘到所需要的精度或者積為零為止。25.35十轉八31.2331
3、十六轉八? 一般的方法是先其他進制做為媒介,先轉為其他進制再從其他進制轉為八進制。
如 84.cf ?先轉為二進制:8=1000? 4=0100 12=1100? 16=1111 ?總:1000 0100.1100 1111
(按照二轉八規則)010 000 100.110 011 110= 204.636
其他進制轉為十進制
1、十六轉十(5F):5 * 16^1+15 * 16^0=? 95
2、八轉十? (123.4):1 * 8^2+2 * 8^1+3 * 8^0+4 * 8^-1= 83.5
3、二轉十? (1101.11):1 * 2^3+1* 2^2+0 * 2^1+1 * 2^0+1 * 2^ -1+1 * 2^-2=13.75
其他進制轉為十六進制
1、二轉十六,規則同二轉八一樣,只不過是四合一:
1010 1011 110.011=0101 0101 1110.0110=55E.6
2、八進制轉十六進制,只能是用其他進制做為媒介,轉為其他進之后再轉為十六進制
3、十轉十六,方法一:用其他進制做媒介 先轉為其他進制再轉為十六進制。
方法二 :用整數除16取余法,小數用乘16取整法。
運算符
優先級運算符含義說明結合方向
說明:同一優先級時,運算方向按照結合方向決定。
自增(自減)i++與++i的不同
i++表示先使用i的值之后再+1
++i表示先+1
從上述表中可以大致歸納出各類運算符的優先級:
初等運算符(??)[??] ->? .
↓
單目運算符
↓
算述運算符(先乘除,后加減)
↓
關系運算符
↓
邏輯運算符(不包括!)
↓
條件運算符
↓
逗號符
printf函數:
format -- 是格式控制字符串,其中兩種類型的對象:普通字符和轉換說明(加%那種)? 。在輸出時,普通字符將原樣不動地復制到標準輸出,轉換說明并不直接輸出而是用于控制 printf 中參數的轉換和打印。每個轉換說明都由一個百分號字符(%)開始,以轉換說明結束,從而說明輸出數據的類型、寬度、精度等
函數原形:%[flags][width][.precision][length]specifier,即:%[標志][最小寬度][.精度][類型長度]說明符? ? (其中如果加轉換說明時,%和 說明符(格式符)不能省略,其他均可)
函數表示在format的控制下,將其參數進行格式化,然后再輸出打印出來。
如果函數執行成功,則返回打印字符的數量,失敗則返回負數。
printf 函數的返回值為其輸出字符串常量的字符數(注意字符數與字數的區別),注意計數針對所有的打印字符,包括空格和不可見的換行字符(不包括字符串的空字符)。
printf函數輸出方向是自右到左的。圖解:
scanf函數
標準輸入流stdin:它是從標準輸入設備(鍵盤)獲取數據,程序中的變量通過流提取符從流中提取數據,注意:只有在輸入完數據再按回車鍵后,該行數據才被送入鍵盤緩存區(sell),形成輸入流,提取運算符才能從中提取數據。需要注意保證從流中讀取數據能正常運行
scanf函數是從stdin中讀取內存的子程序。并將數據保存在變量的地址中。
scanf函數返回成功讀入的數據項數。函數返回值為int型。
如果a和b都被成功讀入,那么scanf的返回值就是2;
如果只有a被成功讀入,返回值為1
如果a和b都未被成功讀入,返回值為0;
如果遇到錯誤或遇到end of file,返回值為EOF。end of file為Ctrl+z 或者Ctrl+d。
函數原形:int scanf (const char * restrict format,...);(存儲順序由編譯器決定)
**注意:
(1)在高版本的 Visual Studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。
(2) 對于字符串數組或字符串指針變量,由于數組名可以轉換為數組和指針變量名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。
(4) scanf函數中沒有類似printf的精度控制。如:scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。
(5) scanf中要求給出變量地址,如給出變量名則會出錯如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。
(6) 在輸入多個數值數據時,若格式控制串中沒有非格式字符作輸入數據之間的間隔,則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數據(如對“%d”輸入“12A”時,A即為非法數據)時即認為該數據結束。(7) 在輸入字符數據(%c)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。(scanf有一個明顯的優點,速度比cin函數快)
圖解:
?
審核編輯:湯梓紅
?
評論
查看更多