首先,按位取反是二进制的一种计算方式,它的运算顺序是:原码——反码——补码——补码取反——补码取反后的码取反码——再取补码。。。。。

喵的,我自己看的都云里雾里,所以就举一个例子:

b=~7

prin(b)

猜猜等于多少?     哦豁~~~答案竟然是———(自己先想一想去)

首先,7的二进制形式是00000111,对它取反码,得00000111,取补码,得00000111。

什么?不知道什么是反码,补码,取反?好吧,普及一下,取反:即把1变成0,0变成1.

反码:正数的反码是其本身,负数的反码是符号位(第一位)不变,其它位0变1,1变0.

补码:反码的最后一位加1(若本身就是1,则向前进1位),内存中二进制是以补码形式储存的。

现在00000111取反,得11111000,对其取反码,得100000111,再取补码,得10001000,也就是-8。(对了,忘了说了,符号位是0为正,是1为负)

这样,~7,也就是7的按位取反就出来了,等于-8

现在再推一个负数:

c=~-7

print(c)

-7的二进制为10000111,反码:11111000,补码:11111001,补码取反:00000110,再取反码:00000110,取补码:00000110,最终结果为6。

好了,现在应该会了吧?顺便一提,0的按位取反是-1。

什么?你说每次这样算太麻烦了?好吧,告诉你个小窍门:

正数的按位取反为本身加一再取负(如~6=-7);

负数的按位取反为本身加一再取绝对值(如~-6=5)。

按位取反‘~’是啥?相关推荐

  1. python ~ not 的区别 :前者按位取反,后者是逻辑‘与或非’的‘非’

    ~按位取反 https://www.cnblogs.com/JYNNO1/p/10525649.html not 与或非'的'非' http://www.weixueyuan.net/a/381.ht ...

  2. 小tips:JS之按位取反,语法标签label,正则表达式中replace的0,1是什么?

    JS按位取反 Javascript 按位取反运算符 (~) ,对一个表达式执行位非(求非)运算.如 ~1 = -2; ~2 = -3; 来看看~1的计算步骤: 将1(这里叫:原码)转二进制 = 000 ...

  3. c的按位取反运算符(~) 与逻辑逻辑(!)

    位运算     位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有:     &(按位与).|(按位或) ...

  4. java中实现将十六进制按位取反

    public static void main(String[] args) {String javaStr = "060A04000000C2"; //十六进制byte [] b ...

  5. python按位右移的作用_python入门之左移,右移,按位与,按位或,按位异或,按位取反...

    1.< 将数字的位向左移动指定的位数(二进制表示): 例:2<<2输出8 2的二进制表示为10,向左移动2位为1000,十进制为8. 2.>>(右移) 将数字的位向右移动 ...

  6. 从补码的来源剖析到为啥补码=原码按位取反+1

    1.引入问题 你已经困惑了很久,你明明知道 补码就是按位取反,然后加一,但是你想知道的,不是它怎么求滴,而是,它怎来滴.当然,对于阅读这篇文章的你,既然想要知道这个答案,一定是有一定编程基础的读者,肯 ...

  7. java按位取反“~“运算符,负数右移

    首先回顾下计算机组成原理的知识:java中数字以补码存储(补码存储原因(1)),           正数的原码,反码,补码相同,           负数的反码是在原码基础上符号位不变,其他位按位取 ...

  8. C语言符号位补码要变吗,补码与符号位取反

    补码与符号位取反 先来一个 C 语言的小例子: #include #include int main(void) { int16_t n = -1; n &= 0x7FFF; // 按位与 p ...

  9. 补码(为什么按位取反再加一):告诉你一个其实很简单的问题

    ---------------------  作者:wenxinwukui234  来源:CSDN  原文:https://blog.csdn.net/wenxinwukui234/article/d ...

  10. java实现js取反_特定位取反(js实现)

    去华为面试的时候,没有做好准备工作:面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及.笔者是擅长前端的Java Web工程师啊,基本的底层编程知识早已生疏了.机试题碰到了这道位运算 ...

最新文章

  1. spring 基于XML的申明式AspectJ通知的执行顺序
  2. 金蝶应收应付模块流程_金蝶KIS专业版应收应付的系统亮点功能
  3. vue中获取url参数
  4. redis 一主二从
  5. oracle正则判断身份证号,Oracle中查询使用正则表达式函数REGEXP
  6. 程序猿的终点?!!!
  7. sql server 调用webservice
  8. 一致性环Hash算法.NET实现
  9. 【51单片机快速入门指南】4.6:I2C 与 PCF8563实时时钟日历芯片
  10. 从零开始学Pytorch(十一)之ModernRNN
  11. Python爬虫之酷安应用商店
  12. Python条件分支语法
  13. 身份证号码规律,亲测可用
  14. Vue Router系列之 route 和 router 的区别
  15. 新型旅游网站热地带SEO优化建议
  16. 测试开发是什么?为什么现在那么多公司都要招聘测试开发?
  17. java如何给数组初始化?
  18. 2022-2028年中国网络安全行业市场专项调研及投资前景规划报告
  19. HDU2550 百步穿杨【打印图案】
  20. 读秀更新到V4.0了,会自动提醒验证码输入,支持包库全文下载

热门文章

  1. SQL基本语句使用总结
  2. C# 透明背景Panel, 透明图像, PitureBox透明效果
  3. 空心三角形图案-c++
  4. 387:字符串中的第一个唯一字符
  5. 【Python】python数据库编程
  6. Xilinx MicroBlaze软核驱动DDR4
  7. 第三代电力电子半导体:SiC MOSFET学习笔记(一)SiC兴起
  8. 原根算法C语言,算法导论-----数论-----元素的幂
  9. tomcat命令行重启
  10. 华为台式机擎云W515 PGUV-WBY0安装银河麒麟V10