This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069:左移位的未定义行为?

Guru**** 2577385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/919869/tms320f28069-undefined-behaviour-of-left-shift

器件型号:TMS320F28069

您好!

我正在执行左移操作、它正在旋转。 (使用编译器版本 TI v16.9.4.LTS)

TEMP1 =(UINT32)(0x3UL <<56);

这是我得到的结果。

TEMP1 = 50331648 (000000110000000000000000000000000000b)

结果应该是这样

TEMP1 = 0

请解释这种未定义的左移行为。

此致、

Shubham

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们的一位专家将很快与您联系、主要是在7月6日(星期一)美国假日期间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当移位计数的值大于或等于第一个操作数的大小(以位为单位)时、任何移位表达式都未定义。  在本例中、31是定义的最大移位计数。  31是5位以内的最大无符号值。  请注意、值56的低5位是24、即发生的移位量。

    谢谢、此致、

    乔治