c++入门笔记(7)进制转换

来源:互联网 发布:破解学校电脑网络 编辑:程序博客网 时间:2024/06/15 23:22

2进制
8进制
16进制

计算机的逻辑

用1和0来代表某一段电路的真实状态(通过或者断电)。
通电为1,断电为0。

二进制

用1和0代表真和假。
由于早期的计算机一次能够发送8位数字,很自然地用8位2进制数字编写代码。


字节

8位2进制也叫字节
如:从0000 0000… …1111 1111间的所有可能的组合,每一种组合便是8位计算机的一次传递的量
16位计算机则一次传递0000 0000 0000 0000… … 1111 1111 1111 1111间的16位2进制数字组合。以此类推。

8位2进制数可以表示256个不同的值。

高8位和低8位

8位2进制数字是一个字节,那么4个2进制数字就是半个字节,如:
1010 0101
1010是前半个字节,叫高8位
0101是后半个字节,叫低8位


进制的换算

10进制使用数字0-9,逢10进1 。
16进制使用数字0-F,逢16进1。
8进制使用数字0-7,逢8进1。
2进制使用数字0-1,逢2进1 。

10的进位:
100 101 102 103… …
16的进位:
160 161 162 163… ..
8的进位:
80 81 82 83… ..
2的进位:
20 21 22 23… ..


任何数值的0次冥是1
因此,如果要表示10进制的5:
5*100= 5
表示15:
1 *101+5 *100=10+5=15
表示100:
1 *102+0 *101+0 *100 = 100+0+0=100


8进制数转换10进制数

同理,8进制数111便是:
1 *82+1 *81+1 *80=64+8+1=(10进制)73

16进制数转换10进制数

16进制数FFFF
F * 163+ F * 162+ F *161 +F *160=61440+3840+240+15=(10进制)65535

2进制数转换10进制数

2进制数1111 1111
1 *27+1 *26+1 *25+1 *24+1 *23+1 *22+1 *21+1 *20=128+64+32+16+8+4+2+1=(10进制)255


10进制数转8进制数

先定它的位数,看一个10进制数中有多少个8的幂
比如十进制数200,它里面最多包含2个8相乘,那么它转换成8进制数最高位是82.

200除以64(82)等于3,那么8进制第3位是3
200/64=3余8,8除以8(81)等于1,那么8进制的第2位是1
余数为0,那么8进制的第1位为0

所以10进制数200转换成8进制数为:310

8进制值 262144 32768 4096 512 64 8 1 位数 7 6 5 4 3 2 1 幂次 86 85 84 83 82 81 80 转换 0 0 0 0 3 1 0

10进制数转2进制数

同理。
10进制数65转2进制数。
先定位:第7位,26(64)。

65除以64(26)等于1。故第7位是1
余1,1比32小,故第6位是0
1比16小,故第5是0
1比8小,故第4位是0
1比4小,故第3位是0
1比2小,故第2位是0
由于余数还是1,故第1位是1

所以10进制数65转换为2进制数为:1000001

2进制值 128 64 32 16 8 4 2 1 位数 8 7 6 5 4 3 2 1 幂次 27 26 25 24 23 22 21 20 转换 0 1 0 0 0 0 0 1

10进制数转16进制数

同理。
10进制数5000转16进制数。
先定位:第4位,163(4096)。

5000除以4096(163)等于1。故第4位是1
余904,904除以256等于3,故第3位是3
余136。136除以16等于8,故第2位是8
余8,故第1位是8

所以10进制数5000转换为2进制数为:1388

16进制值 1048576 65536 4096 256 16 1 位数 6 5 4 3 2 1 幂次 165 164 163 162 161 160 转换 0 0 1 3 8 8

2进制数转16进制数

如:2进制数1111 1100
把这个2进制数分为两组,
右边一组是:1111,在10进制中为15,在16进制中为F
右边一组是:1100,在10进制中为12,在16进制中为C
把这两个16进制数放在一起就是FC,它的实际值为1111 1100

这种快捷方式永远成立,它可以将任何长度的任何一个2进制数,缩减为每4个一组,将每组中的4位数转换成一个16进制数。把这些16进制数拼在一起就得到了在16进制数中的结果。而将16进制数换成10进制数又非常方便。
这就是为什么汇编语言使用16进制的原因。
16进制FC是10进制的252。
F*161+c*160=15*16+12=240+12=252(10进制)

原创粉丝点击