如何判断一个计算机系统的右移是“逻辑右移”,还是“算术右移”?

来源:互联网 发布:新手美工 编辑:程序博客网 时间:2024/04/30 03:36

右移和左移是不同的

对于左移来说,是没有“逻辑左移”和“算术左移”的区别的,这里的区别主要在于计算机系统根据最高位(也就是符号位)是“1”还是“0”,补充“1”还是“0”

无论是对于无符号数的最高位为“1”,还是为“0”,左移时最低位一律补全“0”

或者是对于有符号数的符号是正“0”,还是负“1”,左移最低位也一律补全“0”


不同之处在于

只有在右移的时候,才有“逻辑”和“算术”的区别


如何测试一个计算机系统是“逻辑右移”还是“算术右移”?

答案是:必须用最高位为“1”的数测试

如果最高位为“1”的数(这里用全“1”序列~0来表示)右移 :

a=(~0>>4);
if(a==~0)printf("计算机系统为算术右移");
else printf("计算机系统为逻辑右移");
0 0
原创粉丝点击