位移运算符
int main()
{
int a = 5;
00000000000000000000000000000101 二进制
左移一位,左移:右补0,左抛弃
00000000000000000000000000001010 2^3 + 2^1 = 10
int b = a << 1;
printf("%d", b);//b = 10
return 0;
位移运算符,不能移动负数位,这个是标准未定义的
}
int main()
{
int a = -1;
整数的二进制表示有:原码,反码,补码,存储到内存的是补码
正整数的原,反,补 一样
-1 100000000000000000000000000000001 原码
反码111111111111111111111111111111110 最高位符号位不变,其他位取反
补码111111111111111111111111111111111 反码+1
十六进制 123456789abcdef 满十六进一;
-1 的十六进制存储的是 ffffffff 每个f代表4个1;32位操作系统
int b = a >> 1;
printf("%d", b);//移动补码,得到的内容还是原来的b = -1
return 0;
}
int main()
{
int a = 5 / 2;//商2,得到的是a=2,如果除号两边都是整数,得到的是整数除法
如果除号两边至少出现一个是浮点数,则得到的是小数除法,类型为float,double
int a = 5 % 2;//余1,得到的是a=1,取模只能是整数,得到的是余数
int a = 16;
00000000000000000000000000010000
int b = a >> 1;
移的是二进制位,右移:右抛弃,左补原符号位
00000000000000000000000000001000
printf("%d", b);//b = 8
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】