您的位置:首页 > 编程语言 > C语言/C++

c语言学习笔记6之进制转换

2016-05-14 23:34 302 查看
我们要知道我们的电脑只能识别1和0,而它识别的方式就是通过电路的接通与断开也就是开关的开和闭。所以一个开关有两种情况,即1和0

两个开关有4种情况,11(开开),10(开关),00(关关)01(关开)

由此引申到了二进制,即逢二进一,例如1为1,2为10,4为100,8为1000

我们习惯都是用十进制来表示数,所以涉及到了进制的转换常用的进制有二进制,八进制,十进制,十六进制。生活中也有进制,如时间小时分钟秒的六十进制,秒和毫秒的1000进制

而它们是如何转化的呢?

1.二进制与十进制的转换

1)位与权

93 = 9 * 10 + 3 * 1

       位  权   位  权

整数93在一个字节中的二进制形式:

0   1   0   1   1  1  0  1 --------------------位

128 64 32  16   8  4  2  1 ----------------- 权

2)零和正数:符号位(最高位)为0

A.二转十:一位加权,零位不见

01011101=64+16+8+4+1=93

01101101=64+32+8+4+1=109

B.十转二:有权添一,无权补零

93-64=29-16=13-8=5-4=1 -> 01011101

109-64=45-32=13-8=5-4=1 -> 01101101

127-64=63-32=31-16=15-8=7-4=3-2=1 -> 01111111

3)负数:符号位(最高位)为1

A.二转十:取反加一,转十添负

10100011 取反01011100 加一 01011101

转十64+16+8+4+1=93  添负-93

10010011 取反01101100  加一01101101

转十64+32+8+4+1=109  添负-109

B.十转二:去负转二,取反加一

-93 去负93 转二93-64=29-16=13-8=5-4=1->01011101 取反10100010 加一10100011

-109去负109 转二109-64=45-32=13-8=5-4=1->01101101 取反10010010 加一10010011

二进制和八进制的转换

三位二进制对应一位八进制

十进制       二进制       八进制

0                 000           0

1                 001           1

2                 010           2

3                 011           3

4                 100           4

5                 101           5

6                 110           6

7                 111           7




二进制和十六进制的转换


四位二进制对应一位十六进制



十进制       二进制       十六进制

0                0000          0

1                0001          1

2                0010          2

3                0011          3

4                0100          4 

5                0101          5

6                0110          6

7                0111          7

8                1000          8

9                1001          9

10               1010         A

11               1011         B

12               1100         C

13               1101         D

14               1110         E

15               1111         F

一个字节对应两位十六进制

93               0101 1101     0x5D

109             0110 1101     0x6D

-93             1010 0011     0xA3

-109           1001 0011     0x93

算式演示:

65/2=32/2=16/2=8/2=4/2=2/2=1

  1    0    0   0   0   0  1== 0100 0001==0x41

65/8=8/8=1

  1   0  1==0101

65/16=4

  1   4==0x41

-193取正193

193/2=96/2=48/2=24/2=12/2=6/2=3/2=1

  1     0    0    0    0    0  
4000
1  1 ==1100 0001
   ==0011 1110+1=0011 1111=63

10/2=5/2=2/2=1

  0   1   0  1 ==1010

100/2=50/2=25/2=12/2=6/2=3/2=1

  0     0   1     0   0   1  1=== 001 100 100==0144

                                    64 32 4==100

100/8=12/8=1

  4     4  1==0144

100/16=6

   4   6==0x64

10000/8=1250/8=156/8=19/8=2

    0     2      4     3  2=023420

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: