当前位置: 首页 > news >正文

位运算符实现对数据特定内容的处理

“&”运算符:一个二进制位和0相与能清零;一个二进制位和1相与保持不变。

“|”运算符:一个二进制位和1相或能置1;一个二进制位和0相或保持不变。

“^”运算符:一个二进制位和1异或能取反,一个二进制位和0异或保持不变。

利用这些性质方便实现对数据特定位置值的处理。

源程序

int fun1(unsigned int w);
int fun2(unsigned int w);

void main()
{
    static int x,y;
    int z1, z2, z3, xlB, xnB, xff;
    unsigned int word=0x8795;
    int result1, result2;
    result1=fun1(word);
    result2=fun2(word);
    x=0x8765; 
    xlB=x&0xff;          //x的高字节清零,低字节不变
    xnB=x^(~0xff);    //x的高字节每位取反,低字节不变
    xff=x|0xff;         //x的高字节不变,低字节每位都变为1
    y=0x7895;
    z1=(x&(~y))|((~x)&y);    //z1为x与y的异或
    z2=x^y;        //z1为x与y的异或
    z3=!(x^y);   //x与y相等z3为1,x与y不等z3为0
        
}

int fun1(unsigned int w)     //返回低8位的无符号值
{
    return (int)((w<<8)>>8);
}

int fun2(unsigned int w)     //返回低8位的带符号值
{
    return ((int)w<<8)>>8;
}
程序执行后,z1=z2=0xfff0。  result1=0x0095=95,   result2=0xff95=-107,高字节FFH是符号扩展。
    
    
    

相关文章:

  • 【爬虫基础】第一部分 网络通讯 P1/3
  • 全面掌握Python时间处理
  • 立创实战派ESP32-S3烧录小智AI指南
  • C 获取特定位数的值
  • Web入侵实战分析
  • 经典Embedding方法:Word2Vec与Skip-Gram算法)
  • 如何禁止chrome浏览器自动更新
  • Leetcode:学习记录(二)
  • tcp协议连接,和传输数据
  • 【论文复现】ESRGAN
  • 使用 Certbot 自动获取和更新 Let‘s Encrypt SSL 证书
  • Matlab写入点云数据到Rosbag
  • 基于YOLOv8的人脸识别系统
  • JVM类文件结构深度解析:跨平台基石与字节码探秘
  • Idea新建Package嵌套折叠现象以及如何处理
  • SPO(Self-Supervised Prompt Optimization)自我监督Prompt提示优化的全景指南
  • 2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建
  • 解码 NLP:从萌芽到蓬勃的技术蜕变之旅
  • VMware新建虚拟机
  • 智能体(AI Agent、Deepseek、硅基流动)落地实践Demo——借助大模型生成报表,推动AI赋能企业决策
  • 五粮液董事长:茅台1935已脱离千元价位带,五粮液在千元价位已逐步摆脱其他竞品纠缠
  • 湖南省职业病防治院通报3岁女童确诊“铊中毒”:去年病例,编辑误写为“近日”
  • 梅花奖在上海|第六代“杨子荣”是怎样炼成的?
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 戴维·珀杜宣誓就任美国驻华大使
  • 吴清稳市场稳预期发布会十要点:谈平准基金、股市稳定、公募改革和巴菲特