按位取反计算_c语言按位异或运算符

按位取反计算_c语言按位异或运算符今天我在看简明Python指南的时候,看到其中一个计算机计算的问题,它是这样描述的:x的按位取反结果为-(x+1)~5输出-6。有关本例的更多细节可以参阅:http://stackoverflow.com/a/11810203看到这儿我就疑惑了,之前在大学中学习的计算机基础课程又还给教材了,hhh…无奈,我只好取网上搜寻解析的答案,而网上的解释说得不太让人明白,自己结合他人的解

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天我在看简明Python指南的时候,看到其中一个计算机计算的问题,它是这样描述的:

x的按位取反结果为-(x+1)
~5 输出 -6。有关本例的更多细节可以参阅:http://stackoverflow.com/a/11810203

看到这儿我就疑惑了,之前在大学中学习的计算机基础课程又还给教材了,hhh…
无奈,我只好取网上搜寻解析的答案,而网上的解释说得不太让人明白,自己结合他人的解释进行了一番整理,把思路排版出来,供后来者参阅:


首先要明确的一点是,计算机内部在做数学运算时(也就是计算机的0和1的运算),都是以补码为标准的,说白了 计算机中就一种码那就是补码,而现实社会中的编码规则,例如原码、反码都是我们自定义的,为了和计算机中的补码形成转换关系。所以说在我们手工计算这类由计算机计算的01运算,要站在计算机的角度。因此首先就要将我们的原码反码什么的全都先转为补码,再来计算_。这样才能使得正数和负数的表示统一起来,具体可以参阅【补码的历史】,这里不过多展开了。
接着来看那个问题,从问题入手,解决了实际问题,概念也就自然了然于心了。_

5的补码是它本身(ps:正数的原、反、补码都是它本身;负数的原码最高为为1开头,反码是最高符号位不变,其余位在原码的基础上取反,补码是在反码的基础上+1即可得到)
5的补码:00000101

~5 (也就是5按位取反运算,下面涉及的是补码运算):
00000101按位取反,这里需要将原始01串完全反转过来,不存在最高符号位的概念,取反结果为: 11111010

注意这里的结果是用补码表示的,毕竟这还是机器表示形式,转化为自然语言的编码,把结果转化为原码就是:
补码-1转为反码: 11111010 - 1 = 11111001
反码再取反转为原码:11111001 = 10000110
原码转为十进制,答案就是-6

按位取反的快捷运算公式 -(x+1),至于这个公式怎样推理出来的,这里不作介绍。
关于~x=-(x+1)的证明,有兴趣的可以看看这篇:https://www.cnblogs.com/zjutzz/p/10646760.html。懂原理才能记得牢固,一个快捷计算公式只是为了计算时方便。

转载请注明出处:http://blog.csdn.net/coder__cs/article/details/79186677
本文出自【elon33的博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170466.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TransactionScope 的基本原理简介

    TransactionScope 的基本原理简介C#的事务编程1Db事务DbConnection中创建基于当前连接的DbTransaction2使用TransactionScope,创建环境事务一旦创建,在这个环境包含的DbCo

    2022年7月4日
    35
  • idea安装教程csdn_灯具安装教程

    idea安装教程csdn_灯具安装教程一、下载百度搜索“idea下载”后点进下载网页,如图示直接点击右手边黑色的下载,其余不动二、安装下载完成后建议即刻打开运行,一路next到安装路径,尽量选择C盘以外的盘(这里我想说懂的都懂,不懂就按着做),如果不知道放哪个文件夹可新建个soft专门放应用完成后继续next,第一个32/64按照自己系统类型选择(右击此电脑,点击属性,在关于界面的设备规格里可查看),这里直接勾选64即可。其余都可不选。后面继续next和install加载完成后勾选运行,再点击结…

    2022年10月2日
    3
  • nginx面试常见问题[通俗易懂]

    nginx面试常见问题[通俗易懂]Nginx的并发能力在同类型网页服务器中的表现,相对而言是比较好的,因此受到了很多企业的青睐,我国使用Nginx网站的知名用户包括腾讯、淘宝、百度、京东、新浪、网易等等。Nginx是网页服务器运维人员必备技能之一,下面为大家整理了一些比较常见的Nginx相关面试题,仅供参考:1、请解释一下什么是Nginx?Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、P…

    2022年8月27日
    6
  • 关于java类加载正确的是_java类什么时候被加载

    关于java类加载正确的是_java类什么时候被加载注意我们当在另一个类中引用其他类的final静态值的时候,编译器把其他类的final符号引用存储在自己类的常量池中了

    2022年8月9日
    3
  • visual studio community 2019激活_visual studio 2019社区版安装教程

    visual studio community 2019激活_visual studio 2019社区版安装教程VS2019社区版是免费的,但是需要登录微软账户,不登录只能使用30天,30天之后就无法使用了,如下图:首先使用能够访问外网的电脑登录微软账户注册VS。也可以使用我这个Licensing,直接进入第三步 找到注册文件,路径:C:\Users\{系统登录用户}\AppData\Local\Microsoft\VSCommon 将两个文件夹复制到需要注册的电脑上,路径:C:\…

    2022年8月22日
    23
  • 三次样条插值Python实现

    三次样条插值Python实现函数 y 11 x2y 11 x2y frac 1 1 x 2 算法分析三次样条插值 就是在分段插值的一种情况 要求 在每个分段区间上是三次多项式 这就是三次样条中的三次的来源 在整个区间 开区间 上二阶导数连续 当然啦 这里主要是强调在节点上的连续 加上边界条件 边界条件只需要给出两个方程 构建一个方程组 就可以解出所有的参数 这里话 根据第一类样条作

    2025年11月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号