c++十进制转二进制_二进制与十进制如何互相转换?
正整數的十進制轉換二進制
將一個十進制數除以二,得到的商再除以二,依此類推直到商等于一或零時為止,倒取除得的余數,即換算為二進制數的結果。只需記住要點:除二取余,倒序排列。
由于計算機內部表示數的字節單位都是定長的,以2的冪次展開,或者8位,或者16位,或者32位....。于是,一個二進制數用計算機表示時,位數不足2的冪次時,高位上要補足若干個0。
eg: 125 轉換為二進制
二進制轉換為十進制
二進制轉十進制的轉換原理:從二進制的右邊第一個數開始,每一個乘以2的n次方,n從0開始,每次遞增1。然后得出來的每個數相加即是十進制數。
eg:? 0111 1101 轉換為二進制
從右邊開始每一個乘以2的n次方,n從0開始
0111 1101
1?? ---->? ??2^0? ? ????2的0次方
0???---->? ??0? ? ????????因為為0,所有取0,如果為1 ,應該為2^1
1???---->? ??2^2?? ?????2的2次方
1???---->? ??2^3? ? ????2的3次方
1???---->? ??2^4? ? ????2的4次方
1???---->? ??2^5? ??????2的5次方
1???---->? ??2^6? ??????2的6次方
0???---->? ??0? ? ????????因為為0,所有取0,如果為1 ,應該為2^7
最后將所有項相加:1+0+4+8+16+32+64+0 = 125
十進制轉換為二進制
十進制轉二進制分為整數轉二進制,和小數轉二進制
整數轉二進制
采用"除2取余,逆序排列"法:
2.然后再用2去除得到的商,又會得到一個商和余數
3.重復操作,一直到商為小于1時為止
4.然后將得到的所有余數全部排列起來,再將它反過來(逆序排列),切記一定要反過來!
假設我們現在需要將42轉為二進制,那我們怎么做呢,如下圖所示:
小數轉二進制
采用"乘2取整,順序排列"法:
2.再用2乘余下的小數部分,又得到一個積,再將積的整數部分取出
3.重復操作,直到積中的小數部分為零,此時0或1為二進制的最后一位,或者達到所要求的精度為止
例如將0.125轉換為二進制:
0.25 * 2 = 0.5 ------0
0.5 * 2 = 1.0 ------1
當小數部分為0就可以停止乘2了,然后正序排序就構成了二進制的小數部分:0.001
如果小數的整數部分有大于0的整數時,將整數部分和小數部分先單獨轉為二進制,再合在一起就可以了,例如:
現將8轉為二進制:得到1000
再將0.125轉為二進制:得到0.001
合并后為1000.001
二進制轉換為十進制
二進制轉為十進制要從右到左用二進制的每個數去乘以2的相應次方,小數點后則是從左往右。
如果首位是0就表示正整數,如果首位是1則表示負整數,正整數可以直接換算,負整數則需要先取反再換算。
因為計算機內部表示數的字節單位是定長的。如8位、16位、32位。所以位數不夠時,高位補零。
如要想二進制00101010轉為十進制,因為以0開頭,所以這是正整數,計算如下所示:
如果11101011想轉為*負的十進制,因為最高位是1,所以先減一取反 00010101,然后計算出00010101對應的十進制為21,所以11101011最終對應的十進制為 -21。
總結
以上是生活随笔為你收集整理的c++十进制转二进制_二进制与十进制如何互相转换?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做双眼皮开眼角好不好
- 下一篇: 什么是肛肠