首页 » 生活 » 取反运算(python取反运算)

取反运算(python取反运算)

东毅 2023-03-05 0

扫一扫用手机浏览

文章目录 [+]

本文目录一览:

取反运算是什么意思?

比如说byte类型的5,在内存中是00000101,按位取反后就是11111010

当你再次输出这个数时就变成了250

按位取反就是1变0,0变1

首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节

那么再看看按位取反的结果:

00000000 00000000 00000000 00000101 这是5

00000000 00000000 00000000 00000000 这是0

11111111 11111111 11111111 11111111 这是-1

11111111 11111111 11111111 11111110 这是-2

11111111 11111111 11111111 11111101 这是-3

11111111 11111111 11111111 11111100 这是-4

11111111 11111111 11111111 11111011 这是-5

11111111 11111111 11111111 11111010 这是5取反的结果-6

C语言中的位运算符是怎么取反的

~1010的反码是0101

而负数在计算机中的表示是用补码,-11求补码过程:1011取反-0100加1-0101

即-11等价于~10

括号中的是0101

补充说明:是这样的,1010在32位计算机中的存储实际上是00001010,取反后是11110101,在计算机中首位是0表示正数,是1表示负数,即11110101表示的是一个负数,即要由11110101求这个负数,即求补码的逆,步骤:先减1得11110100,再取反,取反时符号位不变,得10001011,即-11。用4位表示的话可以填0101,或者是8位的11110101

~取反运算符

在java虚拟机中整数有byte、short、int、long四种 分别表示 8位、16位、32位、64位有符号整数。

(1)在Java中,所有数据的表示方式都是以补码形式来表示

(2)正数:原码、反码、补码相同

(3)负数:符号位为1,其余各位是对原码取反,然后整个数加1

(4)~按位取反(反码加1称为补码。)步骤就是先求出这个数(因为java存的数是补码)的原码,然后对原码取反得到X,这个X就是我们要求的那个数的补码

引用:

例如  57的二进制数是原码(表示一个字节  8bit) 0011 1001

,~表示按位取反 

其57按位取反后二进制表示为(表示一个字节  8bit) 1100 0110

1100 0110  (最前面的第一位表示符位 )

1表示次数为负数

1100 0110  可表示为     -(2^6+2^2+2^1) = -70;

负数在计算机里面要用补码来表示

即补码=符号位以后的按位取反后加1    

反之减1

所以 -70 = 1100 0110 符号位以后按位取反后再加一为 1011 1010 = -58

即~57 = -58;

负数反之即可。

c语言中的位运算符中‘按位取反’是怎么运算的

使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。

例如,假如计算机是32位的,接下来要计算~5的值,计算过程如下:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101

执行~运算,即~5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6

以上过程没有任何问题,但如果忘记了负数的二进制表达方式,那么就会对这个结果产生疑问,为什么1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能会以为它应该表示-10等等,所以,使用~按位取反的另一个关键就是理解1111 1111 1111 1111 1111 1111 1111 1010为什么表示-6,也即理解负数的二进制表达方式。

扩展资料

js取整

~是按位取反运算,~~是取反两次

在这里~~的作用是去掉小数部分

因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数

除了~~n 还可以用

n0

n0

n|0

C语言中取反运算符'"!"如何使用?

运算符"!"是逻辑非运算符;"~"才是按位取反运算符。

经过"!"运算后,运算结果只有0或1;而经过"~"运算后,结果有多种,取决于操作数。

下面通过实例来介绍这个运算符的使用方法:

int a=10, b, c;

b = !a;   // 运算后b=0,因为a不等于0(即为真),所以取非后等于0(为假)

c = ~a;   // 运算后c=5,因为a的二进制位1010,按位取反后变为0101(即等于5)

标签:

相关文章

  • 暂无相关推荐