28.二进制的按位运算和移位运算(~、&、|、^、<<、>>)
#include <stdio.h> //fopen函数的包 int main() { unsigned char ch = 'a'; printf("二进制 01100001 的真值::%d\n", ch ); unsigned char ch1 = ~ch; printf("二进制 01100001 反码的真值::%d\n", ch1 ); unsigned char and = ch & ch1; printf("二进制 01100001 & 10011110 的结果:%d \n", and ); unsigned char or = ch | ch1; printf("二进制 01100001 | 10011110 的结果:%d \n", or ); unsigned char or1 = ch ^ ch1; printf("二进制 01100001 ^ 10011110 的结果:%d \n", or1 ); unsigned char left = ch << 1 ; printf("01100001 << 1 的结果为:%d\n",left); unsigned char right = ch >> 1 ; printf("01100001 >> 1 的结果为:%d\n",right); /* 1.按位取反:~ a为1byte也就是8bit存储数据,a(无符号)对应的二进制数为01100001,真值为97 01100001 对应的反码为 10011110,真值为 158 2.按位与: 01100001 & 10011110 对应为都为1时,结果才为1 01100001 10011110 -00000000 真值为0 3.按位或: 01100001 | 10011110 对应有一个1时,结果就为1 01100001 10011110 -11111111 真值为 255 4.按位异或: 01100001 ^ 10011110 对应有当且仅当只有一个为1,结果才为1 01100001 10011110 -11111111 真值为 255 5.左移:<< int 对象的每一位向左移动指定位数,移除左侧末端的值会丢失。 01100001 << 1 011000010 真值为 194 6.右移:>> int 对象的每一位向右移动指定位数,移除右侧末端的值会丢失。 01100001 >> 1 001100001 真值为 48 */ return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界