当前位置: 首页 > news >正文

查询网站mx记录网站备案多少岁

查询网站mx记录,网站备案多少岁,网站建设大概多少费用,wordpress读取父分类列表前一篇博客 varint原理 - 正数的编码和解码_YZF_Kevin的博客-CSDN博客我们讲了varint的实现原理,举例也分析对于正数的编码,解码过程 本篇博客,我们开始举例分析负数的编码和解码,因为负数有原码,反码,补码…

前一篇博客 varint原理 - 正数的编码和解码_YZF_Kevin的博客-CSDN博客我们讲了varint的实现原理,举例也分析对于正数的编码,解码过程

本篇博客,我们开始举例分析负数的编码和解码,因为负数有原码,反码,补码的概念,如果大家对这一块不熟,可以先看下我的这篇博客,里面有详细的解释 大端 小端 原码 反码 补码 及内存中的表现_YZF_Kevin的博客-CSDN博客

先回顾下varint的编码,解码过程

编码原理

varint 对数字的二进制,从右往左,每7位分割成一块

如果不是最后一块,则最左边补1,组成一个字节

如果是最后一块,则左边缺的全部补0,组成1个字节

最终保存的时候,根据分割块的顺序依次从左往右

解码原理

读取字节流后,从左往右,逐个字节判断

如果该字节最左边为1,说明varint值没读取完,后面的字节还是本varint的值,继续读。本字节最左边的1去掉后,剩下的7位留作备用

如果该字节最左边为0,说明varint值读取完毕

最终,根据分割块的顺序依次从右往左填,组成的字节流按int型解析即可

举例

数字 -1,负数在内存中以补码形式存放,先计算补码,我们以32位的整型为例

-1的源码:10000000  00000000  00000000  00000001(符号位为1表负,其他跟正数一样)

-1的反码:11111111    11111111    11111111   11111110  (符号位不变,其他位全部取反)

-1的补码:11111111    11111111    11111111    11111111  (反码+1即可)

但是varint对负数统一是用64位来表示的,所以

64位的-1在内存中表示如下

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

每7位标一个颜色,一共分成了10块(64 = 7 * 9 + 1) 

1 1111111 1111111 1111111 1111111 1111111 1111111 1111111 1111111 1111111

编码过程

1. 从右往左依次取7位,第一次取出来的1111111,因为自己不是最后一块,根据规则左边补1,得到11111111

2. 重复上面的步骤,依次处理每块数据

3. 最后一块1,因为是最后一块了,根据规则左边补0,得到00000001

把这些分割后新组成的块,从左往右

所以,最终varint表示法-1的最终格式是

11111111 11111111 11111111 1111111111111111 11111111 1111111 11111111 11111111 00000001

动手实验

proto文件和程序如下(注意:我们定义的是int32类型)

// 玩家信息
message Player {int32               uniNum          = 1;    // 唯一序号
}

实验结果(可以看到实际经过Marshal()序列化之后,-1确实占用了10个字节,内容和我们计算的完全一样)

结论

1. varint可以对正数编码,也可以对负数编码

2. varint编码用来表示负数时,即使指定了int32类型,varint一样会作为int64来处理,且发送时要占用10个字节,非常坑

针对varint这个问题,protobuffer也做出了优化,可以使用sint32,那就是我们下一篇要讲的zigzag编码

protobuf中zigzag编码原理_YZF_Kevin的博客-CSDN博客

http://www.yayakq.cn/news/809592/

相关文章:

  • 印象网站建设网站建设外贸广州
  • erp系统与网站对接长沙wordpress主题改中文字体
  • 重庆怎么站seo企业营销管理制度
  • 做游戏代练的网站项目投资网
  • 个人备案做视频网站可信赖的网站建设案例
  • 在百度做网站赚钱吗百度网盟推广的投放工具
  • 手机网站二级域名变装小说 wordpress
  • 电商网站建设应用无锡有什么网站
  • wordpress免费企业网站wordpress jiu
  • 2000做网站贵么网站开发PHP程序员招聘
  • 做徽标哪个网站素材多少儿编程证书含金量排名
  • 深圳专业建网站公司排行推广普通话的宣传语
  • 成都网站编辑地名公共服务网站建设
  • 什么是网站推广?深圳企业网站制作推广运营
  • 长安英文网站建设封面制作app
  • 渭南市住房和城乡建设局官方网站百度竞价排名收费标准
  • 推荐个网站免费的手机网站做淘宝客
  • 做影视网站规模不大股票网站模板 dedecms
  • 如何开发网站平台可以发外链的网站或平台有哪些
  • 网站建设与管理好过吗怎么选择做网站的公司
  • 网站访问量很大怎么办帮小公司代账一个月费用
  • 竞价网站做推广方案wordpress国外主题加载慢
  • 网站更换服务器怎么做沈阳正规网站建设哪家便宜
  • 网站建设 云计算榆林市 网站建设
  • 为什么要建设o2o网站影视小程序源码
  • 营销型网站重要性天津的网站建设公司哪家好
  • 做个外贸网站一般需要多少钱网站要害字
  • 做母婴网站设计思路长沙最新确诊病例
  • 网站开发脚本语言和数据库前端开发培训班学出来有用吗
  • 网站权重最高是多少wordpress内页打不开