首页 > 编程知识 正文

c按位取反运算符,c语言位运算符左移右移

时间:2023-05-03 17:45:28 阅读:39478 作者:2339

3358 www.Sina.com/http://www.Sina.com /一元运算符,对应的二进制位,0等于1,1等于0。

按位取反运算符 ~

由于负数的原码、补码、反码不同

因此,进行计算。

补全码-反码-原始码

原码-反码-补全码

原码的二进制位都将1变为0,0变为1,得到反码

反转1得到补数(反转加法的1位的最右位的1 ) )。

例如:

Int a=15

设a=15为a1

此时的a1的源代码为0……0,0……0,0……0,0000111

a1是正数(正补数、反符号、原符号相同),因此进行反运算:

如果将~a设为a2,

因此,a2的原代码为1……1、1……1、1……1、1110000

所以a2的反码是,1……0,0……0,0……0,000111

补数=反码1 :所以,a2的补数: 1……0,0……0,0……0,00010000 (二进制都是二进制1 ) )。

所以a2=-16

分析:

使用~计算负数时,在计算机中,由于负数的补数、反码、原码不同,首先将操作数的值作为补数进行计算,进行逆运算;

Int a=-15; (a=-15为源代码); (在计算机中负数以补数的形式存在)

此时,首先进行从源代码到补数的计算。

原码是-151:……1、1……1、1……1,0000111

反符号: 1……1、1……1、1……1、11110000 (将原符号换算为反符号:将原符号的值取反,将1变为0、0变为1 ) ) )。

补数(补数) 1……1、1……1、1……1、1110001

此时,包括符号位在内进行逆运算。 0……0,0……0,0……0,0001110:14

所以呢

~a=14;

正数:

负数:

取反运算符公式:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。