本文目錄一覽:
- 1、C語言,二進位,八進位,十六進位的問題
- 2、C語言中的二進位,八進位,十進位,十六進位是什麼,還有,數組,
- 3、c語言中的二進位,八進位,十進位,十六進位都怎麼算……,可否舉例,謝?
- 4、那位高人能給我講講C語言中二進位,八進位,16進位是怎麼換算的?謝謝了!!!
C語言,二進位,八進位,十六進位的問題
長度為1個位元組的二進位的整數,若採用補碼錶示,且由4個「1」和4個「0」組成,則可表示的最小整數為___
____。
A.-127
B.-121
C.-15
D.-7
答:
搞不清,就挨個算算:
-127的補碼是:1000
0001
-121的補碼是:1000
0111
-15的補碼是:1111
0001
-7的補碼是:1111
1001
只有-121的補碼是由4個「1」和4個「0」組成,答案選
B.-121。
———————————–
在計算機科學中,常常會遇到用二進位、八進位、十六進位等表示的數據。對於算術表達式1023-377Q+100H,其運算結果是____
_____。
A.1024
B.
746H
C.
746Q
D.
1023
答:Q是8進位的標記,H是16進位的標記。
1023-377Q+100H,換算成十進位,就是:
1023
-255+256
=
1024
答案應選
A.1024。
C語言中的二進位,八進位,十進位,十六進位是什麼,還有,數組,
進位是一種計數系統,進位的制度,規則。
我們從小學習以及日常使用的是10進位系統,原始社會沒有數學概念時都是用石頭計數,比如去采果子,採到多少就用多少小石頭對應,因為老祖宗根本不知道1234567890這些符號可以代替石頭。
用實物計數是很麻煩,後來人類進步了逐漸有了數的概念也有了文字,從而產生了數學符號(文字本身就是個符號),而人們發現用數字元號代替石頭計數方便很多,最終演變並統一採用阿拉伯數字作為符號,那就是0123456789。
為什麼沒有大於9的單獨的符號,因為人們覺得0-9等10個夠了,因為10個數字很整齊,也許覺得再多就亂了(我猜的),大於9的數字就用2個符號表示,因此各位上滿10了,就在前面(左邊)寫1,原來的位置寫0,就構成「10」表示數字10,這就是逢十進一的計數制度,簡稱十進位。
蘿莉啰嗦說了那麼多,為的是讓你理解其他進位,其實沒什麼特別,無非就是把「逢十進一」改成「逢n進一」,n就是進位。你當代數代入即可。
比如二進位,就是逢二進一,在二進位中因為只需要2個符號,所以只需要「0」和「1」就可以了。那麼如果要表示大於1的數怎麼辦,那就是進位,比如2(10)=10(2),括弧裡面表示進位,也就是(10進位的)2=(2進位的)10。其他進位以此類推。
特別要說明的是16進位中,由於需要16個符號,因此0-9這10個符號不夠了,只能問字母借,按照順序取英文字母序列的頭6個字母「ABCDEF」作為16進位中餘下的幾個符號,分別代表:10、11、12、13、14、15。如此一個16進位數,比如F等於10進位的15。滿16就進位成10(16),同樣括弧內的數字代表進位。
為什麼要有這麼多的進位?首先因為計算機電路中開閉狀態最穩定,不容易受電路里的電涌、電磁波(電磁感應)影響而改變儲存在裡面的數據(電平狀態),電子線路很容易做到將電平鎖住在兩個極端。因此目前為止計算機普遍採用2進位,也是出於無奈。
當然呈現在你面前的大部分應用程序中的數字全部是10進位的,因為計算機幫你轉換了,而作為編程人員,你必須掌握二進位。而8進位、16進位等常用的進位都可以與2進位方便轉換,在有些場合比較有用,比如查看內存一個位元組,如果按值直接顯示一個數,比如一個8位2進位11011101,就會佔很大篇幅,不便於顯示和描述,而轉換成16進位DD就簡短的多,方便程序員分析,DD的10進位數為221,你可以用WINDOWS中帶的計算器驗證。
c語言中的二進位,八進位,十進位,十六進位都怎麼算……,可否舉例,謝?
先講一下,二進位與十進位。
以10為例,過程如圖。
10進位轉化為二進位
10÷2=5….0(餘數為0)
5÷2=2….1(餘數為1)
2÷2=1….0
1÷2=0….1
然後,非常重要的一步,將餘數倒序相加
即:1010
這裡特地說明一下,當被除數比除數小時,餘數永遠為它自己。
如:8÷10 餘數為8
二進位轉化為十進位
1010
從 右 算起分別對應 :
1 2 4 8
也就是 2的1次方,2次方,3次方
第三步,小數部分怎麼計算呢
如10.1
很簡單,將0.1乘以2
在乘到整數之前,將結果的整數取出。
如:
0.1×2=0.2…..0
0.2×2=0.4…..0
0.4×2=0.8……0
0.8×2=1.6……1
正序排下來: 0001
至於八進位和十六進位,其實是一樣的方法。就是把2換成8。
順便說一下,如果你是要做開發而不是考試的話可以直接用win系統自帶的計算器,選擇「程序員」 模式可以直接得到2.8.10.16進位的所有結果。
那位高人能給我講講C語言中二進位,八進位,16進位是怎麼換算的?謝謝了!!!
二進位轉換含小數點部分
十六進位大同小意,把除以二的數改成16就可以了,如果不明白加我百度HI
#include
stdio.h
void
bit(int
a);
void
bit2(double
a);
int
main()
{
double
a;
int
b;
scanf(“%lf”,a);
b
=
(int)a;
printf(“%d”,b);
if((a-b)0(a-b)1)
{
bit(b);
bit2(a-b);
}
else
bit(b);
}
void
bit(int
a)
{
if(a0)
bit(a/2);
printf(“%d”,a%2);
}
void
bit2(double
a)
{
static
int
c
=
0;
if(c==0)
printf(“.”);
printf(“%d”,(a*21)?(int)(a*2):0);
if(a==0||c5)
{
++c;
bit2(a*2-(int)(a*2));
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/184068.html