day06.数字的编码



第6节:数字的编码

假设我们有一个字节有8个位,8个位存储的数据是01010101,我问你这个数字存储是什么?大家现在考虑现在怎么回答。你首先会问存的是什么,我说里面存的是文本文件,那就按照文本文件来解析,我说是视频文件,那么就按照视频文件去解析。上一节讲解到无符号和有符号的第1位是0的时候怎么解析的,那我们回顾一下,我们假设是一个无符号数01010101,它的十六进制解析结果是55,如果要转换成十进制的话就是85。那么是有符号数的话,第1位是0的话,说明它是正数,因为正数和无符号数的解析方式是一样的。虽然你这个数现在是有符号数来解析,解析完后任然是55,这就是解析的结果。但是如果是11010101按照无符号数来解析你会吗?解析的结果是D5(0xD5),转成十进制是213。但是我告诉你这个是有符号数的话你该如何解析呢?我们需要了解一下概念和需要做那些铺垫。

有符号数的编码规则

概念是什么呢? 分为:1、原码 2、反码 3、补码

原码:最高位为符号位,其余各位为数值本身的绝对值
比如:1的原码如何来写,首先要决定数据的宽度,假设是一个字节(字节有8个位)
           1的原码是0000 0001
          
反码:
            正数:反码与原码相同
            负数:符号位为1,其余位对原码取反

补码:
            正数:补码与原码相同
            负数:符号位为1,其余对原码取反加1

例子:
            正数形式:

            如果是正数是1的话,1就等于0000 0001
           
            如果是正数是6的话,1就等于0000 0110
           
            负数形式:
           
            -1的原码是1000 0001
            -1的反码是1111 1110
            -1的补码是1111 1111    //FF
           
            -7的原码是1000 0111
            -7的反码是1111 1000
            -7的补码是1111 1001   //F9
           
  实验在内存中的存储的值:
 
            int main()
            {
                  char a =1;
                  printf("%x\n",&a)
                  return 0;
            }
           
              int main()
            {
                  char a =-1;
                  printf("%x\n",&a)
                  return 0;
            }
 
总结:
            1、正数原码存储形式
            2、负数补码存储形式
           
            无符号范围:0~FF
            有符号范围:
                                  正数:0~7F
                                  负数:FF~80

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Python程序,用于将时间信息编码为IRIG-B格式: ```python import time def irig_b_code(): # 获取当前时间 dt = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) # 将时间分解为年、月、日、小时、分钟和秒 year, month, day, hour, minute, second = time.strptime(dt, "%Y-%m-%d %H:%M:%S")[0:6] # 计算本年的第一天是星期几 jan1_weekday = time.strptime(str(year) + "-01-01", "%Y-%m-%d").tm_wday + 1 # 计算当前时间是本年的第几天 day_of_year = time.strptime(dt, "%Y-%m-%d %H:%M:%S").tm_yday # 计算当前时间是星期几 weekday = time.strptime(dt, "%Y-%m-%d %H:%M:%S").tm_wday + 1 # 计算当前时间的毫秒数 milliseconds = int(round(time.time() * 1000)) % 1000 # 构造IRIG-B格式的时间信息 irig_b = "{:02d}{:02d}{:03d}{:03d}{:03d}{:01d}".format(day_of_year, hour, minute, second, milliseconds, weekday) return irig_b print(irig_b_code()) ``` 该程序使用Python的内置时间模块来获取当前时间,并将其转换为IRIG-B格式。 IRIG-B编码由六个字段组成,分别是:本年的第几天(2位数字),小时(2位数字),分钟(2位数字),秒(2位数字),毫秒(3位数字)和星期几(1位数字)。在这个程序中,我们首先获取当前时间,并将其分解为年、月、日、小时、分钟和秒。 然后我们计算本年的第一天是星期几,以及当前时间是本年的第几天和星期几。 最后,我们将这些值格式化为IRIG-B编码格式,并返回结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值