数据高位和低位的分离

本文介绍了在通信传输中,如何通过除法和取余操作高效地分离和获取数据的高位和低位,以解决数据过大导致传输丢失的问题。文章详细阐述了10进制和16进制下,除法用于丢弃低位、取余用于保留低位的原理,并给出了具体实例,同时探讨了小数的扩展和应用。
摘要由CSDN通过智能技术生成

使用场景

在进行通信的时候,经常会遇到数据过大传输丢失的问题,因为我们的串口和网口都是按照一个字节(byte)的大小进行传输,但是如果一个数据非常大,一个字节根本不够用呢?这时我们就需要使用数据分离,将大数据分为几个字节分别进行传输, 然后在使用的时候再进行合并。

如何分离

说起如何分离数据高位和低位,我们第一想到的就是这两个符号,‘/’除法和‘%’取余,符号虽然很简单, 但是用起来经常会犯迷糊,哎,我这个时候到底是应该用除法呢,还是应该取余呢?
我会教大家一些小技巧来快速掌握这个简单的小算法。

除法‘/’的用法

在编程里面的除法‘/’和我们日常生活的除法是有区别的,例如5/2,日常生活中的除法是5/2=2.5,编程中则是5/2=2,小数点后面的所有数据都会被舍弃,可不会遵循四舍五入原则,切记。
好了,准备工作做完了,我们依旧简单点,直接先摆结论,然后再来论证,毕竟这需要一个认可的过程。

当对一个数a进行分离高低位操作的时候,将这个数a除以10,就是把这个数的10进制数进行右移1位,也就是丢掉10进制数最右边的1位数。当然,如果除以1000(10 * 10 * 10),则是把这个数的10进制数右移3位,也就是丢掉10进制数最右边的3位数。

例如12345,想要获得这个数据的‘12’两位,那么是不是应该把这个数右移三位,也就是除以1000,右边的‘345’就被丢掉了,只留下我们需要的‘12’,这是很好理解的对吧。
好,那增加一点难度,现在我有一个数,十进制是1000001,十六进制是0xF4241,如图,我想要获得0XF42,那么我应该怎么做呢?还是照着公式套除以1000吗?那肯定是不对的,很明显,我们现在是以16进制的角度来讨论数据分离了

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值