Google Protocol Buffers 编码原理

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. A Simple Messag 举个栗子, 定义一个proto message 把 a 的值设置为十进制的 150: message ...Read More

字节序

字节序是指多字节数据在计算机内存中存储的顺序或者网络传输时各字节的顺序。 在不同的处理器以不同的方式存放, 主要方式有两种即大端字节序(Big Endian)和小端字节序(Little Endian) 端(endian)的起源 “...Read More

c/c++ 中 double 和 float 在内存中的存储结构

浮点数,是指小数点在数据中的位置可以左右移动的数据。 计算机内存中都是以二进制 (0 或 1) 的形式储存数据, 每个 0 或 1 被称为 1 位(bit), 在 x86 CPU 中 1 字节(byte)为 8 位(bit); double 和 float 这两种精...Read More

一个数二进制中1的个数(Hamming weight)

学习一下 https://en.wikipedia.org/wiki/Hamming_weight: 计算一个数二进制非0的个数,直接的思路就是把所有位1相加即为1的个数 以最简单的情况举例, 一个2位二进制数, 比如11(或10或01), 只要把它的第二位和第...Read More

IP数据报首部校验和算法 [转]

IP/ICMP/IGMP/TCP/UDP 报文头都有检验和字节, 大小都是2个字节(16bit), 算法相同 对于发送方计算检验和: (1)把IP数据报的首部都置为0,包括校验和字节。 (2)把首部看成以16bit为单位的数字组成,依次进行二...Read More