在Arduino中,将整数拆分为两个字符的最有效操作是什么?
以下两种方法中,哪一种更有效在Arduino中,将整数拆分为两个字符的最有效操作是什么?,arduino,Arduino,以下两种方法中,哪一种更有效 你真的应该测量一下。我不会回答你的问题(因为你会比我从测量中受益更多),但我会给你第三个选择: struct { union { uint16_t big; uint8_t small[2]; }; } nums; (注意这里大端和小端的区别)你真的应该测量。我不会回答你的问题(因为你会比我从测量中受益更多),但我会给你第三个选择: struct { union { uint16_t big;
你真的应该测量一下。我不会回答你的问题(因为你会比我从测量中受益更多),但我会给你第三个选择:
struct {
union {
uint16_t big;
uint8_t small[2];
};
} nums;
(注意这里大端和小端的区别)你真的应该测量。我不会回答你的问题(因为你会比我从测量中受益更多),但我会给你第三个选择:
struct {
union {
uint16_t big;
uint8_t small[2];
};
} nums;
(注意这里大端和小端的区别)一个选项是测量它(正如已经说过的) 或者,编译这两个文件,看看汇编语言输出是什么样子
但实际上,你的第二个代码不起作用——如果你取
值>8
,你仍然会得到零。一个选项是测量它(正如已经说过的)
或者,编译这两个文件,看看汇编语言输出是什么样子
但实际上,你的第二个代码不起作用-如果你取
值>8
,你仍然会得到零。我如何测量?我在编程方面有点弱。你可以尝试各种不同的方法,然后衡量每种方法所花的时间。在Arduino上,在“loop()”函数中,有一个for()循环,它多次调用测试代码。在for()循环之前,保存micros()的返回值,然后从micros()的值中减去它。在串行端口上输出差异,并使用串行监视器查看时间(我假设您使用的是IDE)。顺便说一句——只要你知道ATmega芯片是哪种endian,你就可以自己学习,工会应该工作得最好。我该如何衡量?我在编程方面有点弱。你可以尝试各种不同的方法,然后衡量每种方法所花的时间。在Arduino上,在“loop()”函数中,有一个for()循环,它多次调用测试代码。在for()循环之前,保存micros()的返回值,然后从micros()的值中减去它。在串行端口上输出差异,并使用串行监视器查看时间(我假设您使用的是IDE)。顺便说一句——只要你知道ATmega芯片是哪种endian,你就可以自己学习,工会应该工作得最好。
struct {
union {
uint16_t big;
uint8_t small[2];
};
} nums;