新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言位运算:深入了解移位操作符与位操作符

发布时间:2026/9/28 7:51:58来源:尧图网络
C语言位运算:深入了解移位操作符与位操作符
移位操作符与位操作符按位或|、按位与和按位取反~、按位异或^、移位运算、一样所有位运算的操作对象都是计算机中存储的补码形式的二进制数。大家请先弄清楚二进制的原码 反码 补码 再来学习位操作符1.移位操作符:左移操作符右移操作符移位操作符的操作数只能为整数左移操作符移位规则“左边抛弃右边补零”移位操作符针对的是二进制数并且是用补码计算的符号位0的二进制原 反 补码相同#includestdio.hintmain(){intnum10;intnnum1;printf(n%d\n,n);printf(num%d\n,num);return0;}num10的二进制补码00000000 00000000 00000000 000001010num1的二进制原码00000000 00000000 00000000 00010100左边抛弃 右边补零打印结果右移操作符移位规则1.逻辑右移左边用0填充右边丢弃2.算数右移左边用原值的符号补充右边丢弃#includestdio.hintmain(){intnum-1;intnnum1;printf(n%d\n,n);printf(num%d\n,num);return0;}逻辑右移num-1的二进制补码111111111 11111111 11111111 111111111num1 2147483647的二进制补码011111111 11111111 11111111 111111111左边用0填充右边丢弃num1 2147483647的二进制原码011111111 11111111 11111111 111111111算数右移num-1的二进制补码111111111 11111111 11111111 111111111num -1的二进制补码111111111 11111111 11111111 111111111左边用原值的符号补充右边丢弃num -1的二进制原码10000000 00000000 00000000 000000001打印结果本人所用的编译器是vs2022,在这个编译器中’ 默认的是算数右移但是大多数编译器用的都是算术右移对于移位运算符不要移动负数位这个是标准未定义的*。2.位操作符、|、^、~位操作符都是用补码计算的计算机中无论正数、负数存储和参与位运算的都是补码运算完成后结果会再从补码转回十进制供我们读取。位操作符有 按位与 同时为1则为1相异为0| 按位或 : 只要有1就为1同时为0才为0^ 按位异或 相同为0相异为1~ 按位取反 符号位不变其他全部取反同样它们的操作数必须是整数同时为1则为1相异为0#includestdio.hintmain(){inti2;intn3;printf(%d\n,in);return0;}逻辑分析i2 补码:00000000 00000000 00000000 000000010n3补码:00000000 00000000 00000000 000000011in原码:00000000 00000000 00000000 000000010(同时为1才为1只要有0就为0|只要有1就为1同时为0才为0#includestdio.hintmain(){inti2;intn3;printf(%d,i|n);return0;}逻辑分析i2补码:00000000 00000000 00000000 000000010n3补码:00000000 00000000 00000000 000000011i | n原码:00000000000000000000000000000110(只要有1就为1同时为0才为0^相同为0相异为1#includestdio.hintmain(){inti3;intn5;printf(%d\n,i^n);return0;}逻辑分析i3 :00000000 00000000 00000000 000000011n5:00000000 00000000 00000000 000000101i ^ n00000000 00000000 00000000 000000111(相同为0相异为1~符号位也变全部取反#includestdio.hintmain(){inti1;i~i;printf(%d\n,i);return0;}逻辑分析以 1 为例计算以 32 位整数为例数字 1 的 32 位二进制补码00000000 00000000 00000000 00000001按位取反后11111111 11111111 11111111 11111110这是结果的补码补码转十进制负数补码转原码规则先取反再加 1取反00000000 00000000 00000000 00000001加 100000000 00000000 00000000 00000010对应十进制 2加上负号最终结果为 -2。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

银河麒麟系统解决FTP无法连接问题 2026/9/29 1:59:51

银河麒麟系统解决FTP无法连接问题

在安装好ftp,vsftpd之后,终端运行ftp x.x.x.x(ip),输入用户名和密码后,再ls出现refused等字眼,则问题核心在于FTP的权限配置和被动模式设置。解决 550 Permission denied(权限不足)这通常是因为启用了 chro…

阅读更多 →
MIPI LP RX信号详解:低功耗接收通道的原理与硬件设计要点 2026/9/29 1:59:51

MIPI LP RX信号详解:低功耗接收通道的原理与硬件设计要点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Σ-Δ ADC原理与实战:用过采样+噪声整形实现24位高精度测量 2026/9/29 1:59:50

Σ-Δ ADC原理与实战:用过采样+噪声整形实现24位高精度测量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Android签名校验四层防御架构:从Java到NDK的极致实践 2026/9/29 1:59:50

Android签名校验四层防御架构:从Java到NDK的极致实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
免费静态网站部署平台全解析:从托管原理到避坑实战 2026/9/29 1:59:49

免费静态网站部署平台全解析:从托管原理到避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
物联网从起源到落地:五层架构、关键技术、ESP32实战与排查 2026/9/29 1:59:43

物联网从起源到落地:五层架构、关键技术、ESP32实战与排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉