字节 bit 和协议

  • 字节
    一个字节 包含 8个bit c中的char类型 java中的byte类型
  • 问题:为什么1个字节包含8个bit位? 原因是ASCII码
  • ASCII码的简单历史:
    为了把英文字母 数字 符号用二进制数字表示,就约定了这套ASCII编码
    总计是128个字符编码
  • 数字0-9:对应编码 48-57
  • A-Z: 65-90
  • a-z: 97-122
  • 应用:大小写转换
  • 进制转换
  1. 二转十:引入位权的概念
  2. 八转十:
  3. 十转二:
  4. 十六转二:
  5. 八转二:
  • 位运算
    & 出现0即为0 可以把一个数分解成二进制
    | 出现1即为1
    ^ 相同为0 不同为1 a0=a;aa=0
  • 应用1 :
    a = a^b
    b = a^b
    a = a^b
  • 应用2:文件简单加密
    ~ 按位取反
    <<
    >>
  • 位运算有趣的小题目
int any = 25;
int count = 0;
while(any)
{
     any=any&(any-1);
     count++;
}
printf("%d\n",count);
  1. 能不能执行完循环?
  2. 如果能,打印值是多少?
  • 协议数据帧的设计
    假设一个机器需要向外传递自己的信息:
    机型:AB型 CD型 EF型 4字节
    版本:20170101 8个字节
    当前电压:(0.0v-360v) 0000-3600 0-255 2个字节
    当前电流:(0.0A-10.0A) 000-100 1个字节

你可能感兴趣的:(字节 bit 和协议)