C語言閱讀題中的進位轉換

2021-03-06 大雜匯來了

C語言閱讀題中的進位轉換

近期做了一道閱讀題,裡面涉及十進位,二進位,八進位,十六進位的轉換。這是每年春考必考的題目。必須要掌握的知識點。

一、題目如下:寫出程序段的運行結果

short a=1;

printf(「%d,%o,%x,%u」,a,a,a,a);

如果a=1,這道題目涉及的是10進位轉換成8進位和16進位的方法。

1)十進位轉化8進位:用十進位數作為被除數,8作為除數,取商數和餘數,直到商數為0的時候,將餘數倒過來就是轉化後的結果

例如36轉換成8進位:36=(44)8   即%o輸出的結果:44

2)十進位轉化16進位:用十進位數作為被除數,16作為除數,取商數和餘數,直到商數為0的時候,將餘數倒過來就是轉化後的結果。方法同上。

例如36轉換成16進位:36=(24)16   即%x輸出的結果:24

 

%u:因為是正數, 輸出結果也是:1

二、題目如下:寫出程序段的運行結果

short a=-1;

printf(「%d,%o,%x,%u」,a,a,a,a);

如果a=-1,這道題目涉及的是2進位轉換成8進位和16進位的方法。

C語言中整型數據在內存中以補碼形式存儲。涉及以下知識點

1)原碼

將最高位做為符號位(0代表正,1代表負),其餘各位代表數值本身的絕對值

+1的原碼:        0 0000000  00000001

-1的原碼:      1 0000000  00000001

2)反碼

正數的反碼和原碼相同

+1的反碼:        0 0000000  00000001

負數的反碼:符號位為1,其他各位在原碼基礎上取反

-1的反碼:   1 1111111  11111110

3)補碼

正數:原碼,反碼補碼都相同

負數:最高位為1,其餘各位原碼取反,再 + 1或者反碼+1

+1的補碼:   0 0000000  00000001

-1的補碼:   1 1111111  11111111

由此可知,正數的原碼,反碼,補碼相同。

而負數的補碼等於其反碼+1;反碼等於其原碼最高位不變,其餘各位取反。

再次回歸到此題:short a=-1;

printf(「%d,%o,%x,%u」,a,a,a,a);

若想正確輸出%o,%x還需要知道二進位、八進位、十六進位之間的對應關係。有了三者之間對應關係,解此題就很簡單了。

1位八進位數對應3位二進位數;1位十六進位數對應4位二進位數

八進位

二進位

十六進位

二進位

0

000

0

0000

1

001

1

0001

2

010

2

0010

3

011

3

0011

4

100

4

0100

5

101

5

0101

6

110

6

0110

7

111

7

0111



8

1000



9

1001



A

1010



B

1011



C

1100



D

1101



E

1110



F

1111

有了這個關係對應表:

%o: 1位八進位數對應3位二進位數

可以把-1的補碼 從低位三個為一組  分組   1   111 111  111  111  111

二進位

1

111

111

111

111

111

八進位

1

7

7

7

7

7

%o的輸出結果為:17777

%x: 1位十六進位數對應4位二進位數

可以把-1的補碼 從低位四個為一組 分組   1111  1111  1111  1111

二進位

1111

1111

1111

1111

十六進位

F

F

F

F

%x的輸出結果為:FFFF

%u:無符號數,所有位都用來表示數的大小。11111111  11111111隻需要把二進位轉換成10進位就可以了。也可以把我們剛求的八進位或十六進數轉換成10進位。

例如:(FFFF)16=(        )10

方法:從最低位給16進位數編位置號0,1,2等。然後以16為底,位置號為指數展開求和

=15*163+15*162+15*161+15*160=65535(八進位轉換成10進位的方法同上)

%u輸出結果:65535

這裡涉及了二,八,十六,十進位的轉換,希望能幫助你!

每個人努力奮鬥,都是為了能更好的生活

拿出你的決心,去努力一把!

喜歡請收藏 ,關注我!

相關焦點

  • BASIC-12十六進位轉換為八進位
    樣例輸入239123ABC樣例輸出714435274【提示】先將十六進位數轉換成某進位數,再由某進位數轉換成八進位。解答:該題思路比較簡單,將輸入的若干16進位數轉換為2進位,再將每三位2進位數轉換為一個八進位數即可。
  • 單片機C語言開發離不開它——秒懂二進位和十六進位
    單片機C語言開發離不開它--秒懂二進位和十六進位作為單片機愛好者,入門學習單片機編程一定要學會進位的基本概念,常見的有(二進位、八進位、十進位、十六進位),今天於曉超帶大家入門一下單片機C語言編程的二進位和十六進位(技術文章閱讀量慘澹,希望大家能夠點讚收藏加轉發,感謝)。
  • 計算機的語言——二進位,十進位、八進位、十六進位與二進位之間的轉換
    而C程序代碼中的整數常量,為了書寫方便,用十進位、八進位、十六進位表示,比如:十進位整數123、-23、+99等。而無論十進位、八進位還是十六進位數據在計算機中表示是轉換成二進位編碼表示,計算機中只存在二進位。
  • 10、進位轉換:二進位、八進位、十六進位、十進位之間的轉換
    上節我們對二進位、八進位和十六進位進行了說明,本節重點講解不同進位之間的轉換,這在編程中經常會用到,尤其是C語言。
  • 學校裡學不到的C語言教程之10:一定要會的移位和16進位轉換原理
    我剛入行的時候也是如此,一來是移位的運算結果需要轉換成二進位後再能校驗運算結果是否正確,二是不同的數據類型移位的操作結果並不是唯一的。不過我們這次要說的移位操作比較簡單,也比較重要。這種算法在編碼/解碼過程中是經常會碰到的,那就是8位單字節數據的移位結果。它的實際用途可以用常見的字節內容顯示為16進位字符串的算法來做個示例。
  • C語言程序設計試題與答案B卷
    C語言試卷(B卷) 年 月考試級 專業一、單項選擇題(本題共有20個小題,每小題1分,共20分)1、一個C語言程序是由( )。6、C語言中數組的下標下限為___________________________. 7、在C語言中,整型常量的書寫形式包括:八進位、十進位和_________進位.8、在C語言中,一個雙精度型變量在內存佔用的字節數是___________.
  • C語言基礎:二進位和計算機語言雜談(編程新手福利)
    密密麻麻的二進位正因為用電壓的高低可以穩定的表示開和關,所以計算機在計算機中只有兩個狀態來傳遞信息,一個高電平,一個低電平,在計算機中,用1表示高電平,用0表示低電平。這個規則就是用1和0來表示十進位數字,這種規則就叫做二進位。它確定了二進位轉換十進位的公式。
  • 計算機等級考試詳解:十進位數92轉換為二進位數!
    計算機等級考試詳解:十進位數92轉換為二進位數!本經驗由宗龍龍原創,全文共1000多字,閱讀需要14分鐘,如果文中存在錯誤,還請大家多多指點,我會積極改進的!14、十進位數92轉換為二進位數是()。A)01011100B)01101100C)10101011D)01011000(圖片來源於網絡)這一題主要考察的是十進位與二進位的相互轉換問題。如果你不知道如何轉換,沒有關係,我們只需要打開pc電腦端的計算器便可以輕鬆的進行十進位與二進位之間的轉換。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    下面在安靜的音樂中,讓我們開始學習吧在我們接觸編程知識時,總會接觸有關進位轉換的知識,最常見的就是10進位與二進位或十六進位之間的轉換,很多時候我們總會遺忘,雖然現在也出現了很多可以直接使用的網絡在線的進位轉換工具,但考試中,我們就要靠自己通過公式進行運算了。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    我們人類有十根手指,通常情況下我們在生活中的計數方式為「十進位」(即0-9),也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字110,表達的就是十進位中的6;二進位數字1111,表達的就是十進位中的15。
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用
  • C語言常用的進位轉換工具函數盤點!爺爺再也不用擔心我不會進位...
    01 字符串轉十六進位 代碼實現: 04 十進位轉字符串 如果只是單個十進位轉字符串,使用sprintf函數就可以了。 如果是十進位數組:
  • 跟我學解Python題-二進位轉換
    實現:輸入十進位正整數,輸出相應的二進位數字輸入樣例1:6輸出樣例1:110輸入樣例2:27輸出樣例2:11011解題過程:1、新建變量num,用於存儲輸入的十進位數字,num=int(input("請輸入想要轉換的十進位數字(十轉二
  • 單片機進位轉換
    一、正數  在高速發展的現代社會,計算機浩浩蕩蕩地成為了人們生活中不可缺少的一部分,幫助人們解決通信,聯絡,互動等各方面的問題。今天我就給大家講講與計算機有關的「進位轉換」問題。
  • C語言-(第一章)程序設計和C語言
    在計算機發展的初期,一般計算機的指令長度為16,即以16個二進位數組成一條指令。例如,用1011011000000000讓計算機進行一次加法運算。這種計算機能直接識別和接受的二進位代碼稱為機器指令。機器指令的集合就是該計算機的機器語言。
  • 有趣的問題,C語言中的十六進位數字為什麼以前綴0x開頭呢?
    C語言允許程式設計師逐位操作變量,此時,最直觀的數字表示方式自然是二進位。不過這樣常常會讓數字看起來「過長」,例如十進位的 255 使用二進位表示為 11111111,因此,在C語言程序開發中,為了程式設計師閱讀代碼的方便,需要逐位操作變量時,常常使用十六進位。
  • 如何進行進位轉換
    進位轉換   進位轉換是人們利用符號來計數的方法。進位轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。   基數是指,進位計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。   位權是指,進位制中每一固定位置對應的單位值。
  • C語言基礎知識學習(一)
    標識符在程序中使用的變量名、函數名、數組名、指針名、標號等稱為標識符.b) 預定義標識符包括C語言提供的庫函數、預編譯處理命令。c) 用戶標識符根據需要定義的標識符。一般用來給變量、函數、數組、文件等命名。用戶標誌符如果與C語言的關鍵字重名,系統報錯;若與標準庫函數重名,系統不報錯,但預定義標識符將會失去原意,代之以用戶新定義的含義。顯然如果後面用到這個函數將會報錯。
  • 6、計算機進位之二進位、十進位、十六進位之間的轉換
    基數:指在某種進位計數制中,數位上所能使用的數字符號的個數位權:指在某種進位計數制中,數位所代表的大小,即處在某一位上的「1」所表示的數值的大小。4、進位之間的轉換4.1、正整數的十進位轉換二進位將一個十進位數除以二,得到的商再除以二,依此類推直到商等於一或零時為止,倒取除得的餘數,即換算為二進位數的結果
  • 歷年專升本進位及其轉換真題
    與十六進位(B5)等值的二進位數是()(2010.3)二進位數111011轉換為八進位為()(2010.105)二進位數1011.11的等值十進位為()(2011.91)十進位數0.6875轉換為二進位數為()(2011.92)執行運算01010100 + 01010011,其運算結果為()(