搞不清的位运算

简介: 注意负数用补码表示

注意负数用补码表示


1、按位左移<< 即将二进制左移N位,舍弃高位,低位用0 填充, 注意符号位的丢失使数的正负转变


2、按位右移>> 即将二进制右移N位,舍弃低位,高位用符号位填充


3、按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0 主要用于未串的截取


按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x & 0177。 二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x & 077。 1.清零


“按位与”通常被用来 使变量中的某一位清零 。如下例:


a=0xfe; //a=0b 11111110


a=a&0x55;


//使变量a的第1位 、第3位、第5位、第 7位清零 a= 0b 01010100


2.检测位


要知道一个变量中某一 位是‘1’还是‘0’ ,可以使用与操作来实 现。


a=0xf5; //a=0b 11110101


result=a&0 x08; //检测a的第三位, result=0


3.保留变量的某一位


要屏蔽某一个变量的其 它位,而保留某些位, 也可以使用与操作来实 现。


a=0x55; //a=0b 01010101


a=a&0x0f; //将高四位清零,而 保留低四位 a=0x05


4、按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1 “按位或”运算最普遍的应用就是对一个变量的某些位置‘1’。如下例:


5、按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1  只有当且仅当其中的一个条件满足时 ,逻辑异或是一种排除性的或


两个位串信息的位差异的标志位, 1。 交换两个值,不用临时变量,假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现: a=a^b; b=b^a;     a=a^b;


1.翻转某一位 当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例: a=0x35; //a=0b00110101 a=a^0x0f; //a=0b00111010 a的低四位翻转


2.保留原值 当一个位与‘0’作异或运算时,结果就为此位的值。如下例: a=0xff; //a=0b11111111 a=a^0x0f; //a=0b11110000 与0x0f作异或,高四位不变,低四位翻转


6求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。


7求反运算和异或运算的区别在于操作的个数,取反只有一个操作数,异或是两个操作数的相反

目录
相关文章
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
527 0
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
数据采集 搜索推荐
推荐系统实践之新闻推荐baseline理解
推荐系统实践之新闻推荐baseline理解
465 1
[MoeCTF 2022]chicken_soup 入土为安的第三天
[MoeCTF 2022]chicken_soup 入土为安的第三天
197 0
|
消息中间件 缓存 算法
社招一年半面经分享(含阿里美团头条京东滴滴)
重点放在专业技能和项目经验两块1.你的简历就是你给面试官提供的考点,简历上的东西必须自己Hold住,万一自己写的东西被问住了,会很尴尬,给面试官留下的印象也不好,所以就是会啥写啥2.技术栈最好不要写精通,你敢写面试官就敢问,被问倒了很尴尬的,写熟悉,了解就行怎么投简历我这里强烈建议找人内推,这样简历通过的概率大些,如果找不到,可以试试脉脉,我就是从脉脉投的简历,把状态改成寻找机会就行,会有很多人找你的推荐一个简历制作模版,我一直用的,https://www.polebrief.com/index算法这个该刷还是得刷,别偷懒,我个人感觉刷完下面几个已经够了,大家可以根据自己的基础情况选择剑指Of
1184 1
|
存储 Java
String 底层是如何实现的?
本文介绍了String类在Java中的底层实现,说明在JDK9之前String是基于`char[]`字符数组实现的,而JDK9及之后版本则使用`byte[]`字节数组实现,这种改变使得存储英文字符时空间效率提高,同时解释了字符串常量池的存储位置随JDK版本的演变。
332 0
String 底层是如何实现的?
|
数据挖掘
跟着mpg案例学Seaborn之Heatmap
跟着mpg案例学Seaborn之Heatmap
303 1
|
缓存 小程序
【微信小程序-原生开发】启动时自动升级更新到最新版本
【微信小程序-原生开发】启动时自动升级更新到最新版本
404 0
正则表达式匹配数字的几种方法比较
正则表达式匹配数字的几种方法比较
|
数据可视化 数据挖掘 Python
Matplotlib图表类型详解:折线图、柱状图与散点图
【4月更文挑战第17天】本文介绍了Python数据可视化库Matplotlib的三种主要图表类型:折线图、柱状图和散点图。折线图用于显示数据随时间或连续变量的变化趋势,适合多条曲线对比;柱状图适用于展示分类数据的数值大小和比较;散点图则用于揭示两个变量之间的关系和模式。通过示例代码展示了如何使用Matplotlib创建这些图表。

热门文章

最新文章