当用两种不同的方法将一个整数除以二的幂时,我得到两种不同的输出.
#include <stdio.h>
int main(void) {
int y1 = 0x00061290;
int y2 = 0xFFFE1A32;
printf("(y1/(1<<k))=%x\n", (y1/(1<<5)));
printf("(y2/(1<<k))=%x\n", (y2/(1<<5)));
printf("(y1>>k))=%x\n", (y1>>5));
printf("(y2>>k))=%x\n", (y2>>5));
return 0;
}
输出:
(y1/(1<<k))=3094
(y2/(1<<k))=fffff0d2
(y1>>k))=3094
(y2>>k))=fffff0d1
当y1为0x00061290时,该整数的输出相同.
我想这是因为y1是正的,y2不是.但我不确定.有人能告诉我在什么情况下他们是不同的,在什么情况下他们是相同的吗?如果可能的话,解释两种操作的区别.谢谢