移位运算符(<<和>>)

复制代码
//整数的二进制表示有:原码 反码 补码;
//存储到内存为补码;
//打印到屏幕上为原码;

#include<stdio.h>

int main()
{

//右移操作符:(正数有/2的效果)
//1.算数右移:右边丢弃,左边补原符号位;(用这个)
//2.逻辑右移:右边丢弃,左边补0;

    int a = 15;
    int b = a >> 1;
    int c = -1;
    int d = c >> 1;
    printf("%d %d\n",b,d);

//左移操作符:(有*2的效果)
//左边丢弃,右边补0;

    int e = 15;
    int f = a << 1;
    int g = -1;
    int h = c << 1;
    printf("%d %d\n",f,h);
    return 0;
}

//警告:对于移位运算符,不要移动负位数,这个是标准未定义的。例如:
//int num = 10 >> -1; (error)
复制代码

运行结果如下:

 

posted @   1379号监听员"  阅读(732)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示