C语言的逻辑右移和算数右移

编写一个程序,检查所用的计算机系统的C编译在执行右移时是按照逻辑右移还是算数右移的原则还是按照算数右移的原则

 


#include<stdio.h>
#include"bitoper.h"
 
//通过逻辑右移实现的算数右移
int AnotherShift(int x)
{
    return x >> 1 | 32768;
}
 
void main()
{
    int x = 21845, y, z;
    char temp[16];
    PrintInBin(x, temp);
 
    //左移规则:高位舍弃,右补0
    //右移规则:低位舍弃,逻辑右移左补0;算数右移左补1
 
    printf("x >> 1\n");
    y = x >> 1;
    PrintInBin(y, temp);
    if(temp[0] == '1')
    {
        printf("算数右移\n");
    }
    else
    {
        printf("逻辑右移\n");
        printf("实现算数右移:\n");
        z = AnotherShift(x);
        PrintInBin(z, temp);
    }

 

可以参考此文章,里面的12.3 有过程和结果

https://wk.baidu.com/view/00050e2429ea81c758f5f61fb7360b4c2f3f2a22?ivk_sa=1023194j

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632