我正致力于实现Dijkstras算法,以检索路由网络上互连节点之间的最短路径.我有实施工作.当我将起始节点传递给算法时,它返回所有节点的所有最短路径.
我的问题:如何检索从节点A到节点G的所有可能路径,甚至从节点A返回到节点A的所有可能路径
当我使用shift进行操作时,我最近发现了一种(奇怪的)行为>> <<!
为了解释它,让我编写这个小的可运行代码,执行两个应该相同的操作(在我的理解中),但我对不同的结果感到惊讶!
#include <stdio.h>
int main(void) {
unsigned char a=0x05, b=0x05;
// first operation
a = ((a<<7)>>7);
// second operation
b <<= 7;
b >>= 7;
printf("a=%X b=%X\n", a, b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
跑步时,a = 5和b = 1.我希望它们都等于1!有人可以解释为什么我得到这样的结果?
PS:在我的环境中,大小unsigned char为1个字节