首页 > 其他分享 >位运算

位运算

时间:2024-10-24 17:11:52浏览次数:2  
标签:操作数 运算 示例 补码 负数 运算符 原码

1、计算机中数字的二进制

在计算机中,二进制正数和负数的表示方法不同。正数直接以其二进制形式表示,而负数则通过‌补码的形式表示。

具体转换步骤

  1. ‌原码‌:正数的原码与反码、补码相同,负数的原码是其绝对值的二进制表示,但最高位为1。例如,-5的原码为10000000 00000000 00000000 00000101。
  2. ‌反码‌:负数的反码是其原码除符号位外各位取反。例如,-5的反码为11111111 11111111 11111111 11111010。
  3. ‌补码‌:负数的补码是其反码加一。例如,-5的补码为11111111 11111111 11111111 11111011。
为什么负数在计算机取补码?
通过补码表示,计算机可以只使用加法电路来处理减法运算。
减法的本质是加上负数的补码,因此加法和减法操作可以用同一种逻辑实现,这简化了计算机的硬件设计,并提高了处理运算的效率。
例如:5的计算机表示(原码):00000101-3的计算机表示(补码): 11111101(原码:1000011,反码:1111100,+1=补码:11111101)
5-3=5+(-3)=
0000 0101
+
1111 1101
=
10000 0010 (注意此处的溢出位),正好是:0000 0010 =2

 2、位运算

5的计算机二进制: 0000 0101

-3的计算机二进制:1111 1101

  1. 按位与(&):
  • 运算符 & 会对两个操作数的每一位执行与操作。当两个位都为1时,结果为1;否则为0。
  • 示例:5&(-3)= 5 

  1. 按位或(|):
  • 运算符 | 会对两个操作数的每一位执行或操作。当至少一个位为1时,结果为1;否则为0。
  • 示例:5|(-3)= -3

  1. 按位异或(^):
  • 运算符 ^ 会对两个操作数的每一位执行异或操作。当两个位不相同(一个为0,一个为1)时,结果为1;否则为0。
  • 示例:5^(-3)= -8

  1. 按位取反(~):
  • 运算符 ~只对一个操作数进行操作,反转其每一位。
  • 示例:~5= -6

  1. 左移(<<):
  • 运算符 << 会将操作数的二进制位向左移动指定的位数,右侧用0填充。
  • 示例:5<<2 = 20

  1. 右移(>>):
  • 运算符 >> 会将操作数的二进制位向右移动指定的位数,左侧根据符号位填充(如果是正数则填充0,如果是负数则填充1)。
  • 示例:-3>>2= -1

  1. 无符号右移(>>>):
  • 运算符 >>> 会将操作数的二进制位向右移动指定的位数,左侧用0填充,无视符号位。
  • 示例:-3>>>2= 1073741823

这些位运算符可以用于高效的低级计算、掩码操作和优化性能等场景,谨慎使用可以带来较好的效能和效果。

     

 

标签:操作数,运算,示例,补码,负数,运算符,原码
From: https://www.cnblogs.com/bestzhang/p/18499970

相关文章

  • Go 中,`...` 运算符
    在Go语言中,...运算符有两个主要用途,分别用于变长参数函数和切片展开。1.变长参数函数在Go语言中,使用...运算符可以定义一个接受可变数量参数的函数,也就是“变长参数函数”。这种函数可以接收不确定数量的参数,并将这些参数当作切片来处理。语法:funcfunctionName(args......
  • Go语言中的位运算符
    位运算(bitwiseoperations)是计算机科学中非常基础且重要的运算类型,它直接操作二进制位。Go语言中提供了一组位运算符,用于执行位级别的操作。Go语言中的位运算符按位与(&):作用:对两个操作数的每个位进行与运算,只有对应位都为1时,结果位才为1。示例:5&3(0101&0011=0001),结......
  • 处理异或运算下的不等式
    真的恶心,妈的放道D1恶心人,D1跟D2正解毛关系都没有,傻逼比赛题号CF1720D2Xor-Subsequence(hardversion)简单转化一下题意就是求这样的一个dp数组:\(f[i]=max_{a[i]⊕j>a[j]⊕i}(f[j]+1)\)以前看见异或不等完全不敢在不等号两边操作,然后这题就是要在不等号上操作:先考......
  • C++运算符优先级
    在C++中,二进制运算符的优先级如下(从高到低):逻辑非(!)按位取反(~)乘法(*),除法(/),取余(%)加法(+),减法(-)左移(<<),右移(>>)关系运算符(<,<=,>,>=)等于(==),不等于(!=)按位与(&)按位异或(^)按位或(|)逻辑与(&&)逻辑或(||)条件运算符(?:)......
  • 基础运算符
    10.基础运算符一.按功能分类 二.按操作个数分类 三.算术运算符//(前)++||--先改变值后进行操作  (后)++||--先进行操作后改变值//值为布尔类型数据 四.赋值运算符 五.比较运算符//!=表示不等于  且比较运算的结果是布尔类型的数据 六.instanceof的使......
  • 数据库 NULL 值对比运算符(null safe equal)
    在SQL的规定中,NULL是不等于NULL的,所以如果使用类似SELECTNULL=NULL这种语句,获取到的会是一个FALSE。但是有些时候我们又希望能够匹配到数据库中的NULL,通常写法是SELECTNULLISNULL,但是有没有能够同时兼容NULL和非NULL的情况呢?MySQLMySQL::MySQL5.7......
  • 运算论
    运算论互换符号互换。加法化乘法:\(k_1+k_2\implies(1+k_1x)(1+k_2x)\bmodx^2\)\(\sum\frac1x=\sumln'(x)\)乘法化加法:取对数优先级考虑变换优先级:线性变换(加减乘除)>非线性可逆变换(次幂)>不可逆有结合律变换(最值:max、min、gcd、lcm)>无结合律变换(求众数、中位数)量规避......
  • 矩阵运算
    矩阵与矩阵加减只有同型矩阵能相加减矩阵的数乘矩阵的乘法多矩阵相乘计算从右往左依次计算。如ABC,先算BC,再算A与BC的结果。矩阵相乘的前提M[mn]mulO[ij];n必须等于i;如:M5×4与O4×2能相乘。......
  • 蓝桥杯基本操作和运算
    文章目录1.基本运算2.循环--进制转换/最大公约数2.1进制转换2.2求解最大公约数3.数组与字符串4.常用的API5.快速读写模版蓝桥杯基本操作和运算10-22号正式开始准备蓝桥杯的比赛,准备参加这个大学B组的Java的赛项1.基本运算首先就是基本的输入输出:system.out.pr......
  • 位运算笔记
    位运算笔记对二进制数进行直接操作:基础操作:例:a=00001101;b=00110101;与:a&b==00000101;//当两个数的第i位都为1时,a&b的第i位才为1或:a|b==00111101;/*当两个数的第i位都为0时,a|b的第i位才为0或者说两个数的第i位其中至少有一个为1,对应的a|b的第i位就为1*/......