整形数据之间的强制转换

您所在的位置:网站首页 matlab怎么强制类型转换 整形数据之间的强制转换

整形数据之间的强制转换

2024-07-13 10:57| 来源: 网络整理| 查看: 265

在计算机系统中,整形数据一律用补码来存储,其原因在于,使用补码可以将符号位和数据位统一处理,与此同时,加法和减法也可以统一处理。

1)正数的原码、反码和补码相同; 2)负数的反码:原码的符号位不变,数据位按位取反; 3)负数的补码:反码+1(如果+1后要进位,要一直往前进位,包括符号位)。

在DSP中的测试代码如下:

// Initialization uint16_t test1 = 10; int16_t test2 = -10; uint16_t test3 = 65000; // Update data test1 = (uint16_t)test2; test2 = (int16_t)test3;

测试结果如下: 这里写图片描述

分析: 10、-10以及6500三个数在计算机存储单元里的存储格式如下表所示,从该表不难看出,将-10强制转换为uint16_t格式后,转换后的数据应为65526,与上述测试结果一致。同理,将65000强制转换为int16_t格式后,转换后的数据应为-536,与测试结果一致。 这里写图片描述

总之,不同类型的整形数据之间的强制转换归根到底就是一条:按存储单元中的存储格式直接传送。因而,对于交流信号,负数通过Modbus通信传送给上位机显示时,在DSP中可以先强制转换为uint16_t格式,然后上位机程序再强制转换为int16_t格式即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3