张伟
进制转换及原理(二进制、十进制、八进制、十六进制)
2020-7-22 16:11
阅读:25861

二进制

一个字节等于8个二进制数

0       0    0    0   0  0  0  0

1       1    1    1   1  1  1  1

128  64  32  16  8  4  2   1

 

1代表有,0代表没有,从右往左看,八个二进制数分别代表了1,2,4,8,16,32,64,128。这8个二进制组合可以代表1~256当中的任何一个数字(所有都是1的话加起来就是256,所有都是0的话加起来就是0。  1~256当中任何一个数字都可以从中表示出来)。这256个字符可以转换成256个字符,这就是所谓的ASCII码。

 

比如:二进制表示 37

           0       0   1    0    0   1  0  1

          128   64  32  16   8   4  2  1

1代表有,2代表没有,对照一下,为1的加起来就等于37,这就是二进制的原理。

十进制

已经很熟悉,此处省略。

八进制

一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。

[注意:以数字“0”开头表示八进制。C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。

正确格式:

"0123"相当于83,即 3*1+2*8+1*8^2=83。

"+0123"相当于83,

"-0123"相当于负83。

备注:前导不能含有字母o或者O

]

     八进制和十进制原理一样,只不过十进制不限制范围,但是8进制只是0~7,0~7这八个数字用二进制表示如上图所示,转换原理就是二进制转十进制

例子:

    十进制数115

    二进制表示就是     

           0      1    1   1   0  0  1  1

          128  64  32  16  8  4  2  1

所有有1的加起来就是115

八进制表示就是把二进制三个三个分开(左边可以无限补0)0 1    1 1  0     0  1  1

 

第一个0  1                       其实就是0  0  1   转换成八进制代表1

第二个1  1  0                   转换成八进制代表6

第三个0  1  1                   转换成八进制代表   3

所以115转换成八进制就是163

十六进制

16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。

 image.png

[注意:以0x开始的数据表示16进制是一种逢bai16进1的进位制。du一般用数字0到9和字母A到F(或a~zhif)表示,其中:A~F表示10~15。最常用(或常见)表示十六进制数值的方式是将 '0x' 加在数字前,或在数字后加上小字 16。0x2BAD 和 2BAD16都是表示十进制的11181(或1118110)。]


例子:加入有一个十六进制数字  2AF5,转换成二进制、十进制。

拆分,先看  5  换成二进制为  0 1 0 1

                 F   换成二进制为  1 1 1 1

                 A   换成二进制为  1 0 1 0

                 2   换成二进制为   0 0 1 0

所以换成二进制加起来就是 0 0 1 0, 1 0 1 0 ,1 1 1 1, 0 1 0 1

转换成十进制为 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

知识点补充:

关于十六进制和八进制前的“0x”“0”是数字0还是字母O (参见此博客)

1、八进制数是一种逢八进一的计数体制,基数是8,用0~7表示,如077。

2、八进制数以数字0开头。

3、十六进制数是一种逢十六进一的计数体制,基数是16,用0~9,A~F表示,如0xFF或0XFF。

4、十六进制数以数字0和字母x的组合0x或0X开头。其中字母x是不区分大小写的,即0x与0X等价。

Note:

输出打印八进制数时 %o 这里是字母 o

int a = 12; 把数 a 分别 以十进制,八进制,十六进制形式 输出打印

printf("%d,%o,%x", a, a, a);//不显示数制前缀

printf("%#d,%#o,%#x", a, a, a);//显示数制前缀


【参考】

https://www.cnblogs.com/liyichen/p/5989143.html

点滴分享,福泽你我!Add oil!

转载本文请联系原作者获取授权,同时请注明本文来自张伟科学网博客。

链接地址:https://wap.sciencenet.cn/blog-3428464-1243124.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?