1. 趣味生活常识网首页
  2. 投稿

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

平常我们在上C语言课时,进制数有二进制,八进制,十进制,十六进制,但这里我们为什么不讲八进制,因为在平时的工作中,几乎不会用八进制。

十进制:

我们平时使用的数都是由0~9共十个数字组成的。例如1,9,11,231,2349等等数,一个数字最多只能表示到9,如果要表示大于9的数,就要由0~9这十个数字组成。例如我们5+9的结果,用一个数字来表示它的结果,是不够的,只能“进位”,用14来表示;也就是满十进一。这些数都是十进制,所谓十进制就是由0~9个数字组成的数,逢十进一(满十进一)。

二进制:

我们不妨将思维拓展一下,十进制是逢十进一,那么二进制就是逢二进一,也就二进制的数不能出现大于2。例如,数字 0、1、10、111、100、1000001 都是有效的二进制。在计算机内部,数据都是以二进制的形式存储的,二进制是学习编程必须掌握的基础。

二进制加减法和十进制加减法的思想是类似的:

· 对于十进制,进行加法运算时逢十进一,进行减法运算时借一当十;

· 对于二进制,进行加法运算时逢二进一,进行减法运算时借一当二。

下面两张示意图详细演示了二进制加减法的运算过程。

1) 二进制加法:1+0=1、1+1=10、11+10=101、111+111=1110

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图1:二进制加法示意图

2) 二进制减法:1-0=1、10-1=1、101-11=10、1100-111=101

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图2:二进制减法示意图

二进制在平常工作的使用的地方,如需要按位与或取反地方,一个数只取高多少位,或只取低多少位,然后变成什么数;都需要二进制的转换。

Eg:

If(val>>4==0)

{

Do some thing;

}

Else if(val<<3==0)

{

Do some thing;

}else

{

Do other thing;

}

首先得把把val值 换成二进制,然后再右移或左移。注:二进制是目前几乎所有以数字电路为基础的计算设备的内部处理数字的基础进制(它位只有0与1)。

十六进制

除了二进制,十六进制也经常使用,甚至比二进制还要频繁。

十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16个数字,基数为16,加法运算时逢16进1,减法运算时借1当16。例如,数字 0、1、6、9、A、D、F、419、EA32、80A3、BC00 都是有效的十六进制。

注意,十六进制中的字母不区分大小写,ABCDEF 也可以写作 abcdef。

下面两张图详细演示了十六进制加减法的运算过程。

1) 十六进制加法:6+7=D、18+BA=D2、595+792=D27、2F87+F8A=3F11

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图5:十六进制加法示意图

2) 十六进制减法:D-3=A、52-2F=23、E07-141=CC6、7CA0-1CB1=5FEF

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图6:十六进制减法示意图

那么十六进制数在我们工作中,一般用在哪里呢。除了数字电路中用二进制来表示(我们能看得到的。如1100,001000这样的表示的数)外,平常说的二进制保存文件 ,数据以二进制在串口或网串中传输,它们都是用十六进制来显示的。因为十六进制恰好是2的4倍,表示一个字节的时候仅仅需要2个十六进制数就可以表示出来,因此多数用2个十六进制来表示一个字符,看上去比较清晰(也可以节约数据长度且换算关系相当直观)。

如果大家对八进制有兴趣,可以去了解一下

八进制

八进制有 0~7 共8个数字,基数为8,加法运算时逢八进一,减法运算时借一当八。例如,数字 0、1、5、7、14、733、67001、25430 都是有效的八进制。

下面两张图详细演示了八进制加减法的运算过程。

1) 八进制加法:3+4=7、5+6=13、75+42=137、2427+567=3216

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图3:八进制加法示意图

2) 八进制减法:6-4=2、52-27=23、307-141=146、7430-1451=5757

二进制算法的流程图(一文带你深入理解二进制十进制十六进制)

图4:八进制减法示意图

二进制,十六进制在平进工作中用到的地方特别多。如果对二进制与十六进制不理解,就很难把工作做好。所以大家一定要理解透。

以上的图例是借鉴一位大佬的,觉得写的挺好的,加上工作自己总结的。分享给大家。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至87172970@qq.com举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论