C语言按位取反原理

正数取反是先将初始数值转换成二进制数(6==》00000110),再对二进制数的每一位取反:即将0变为1、将1变为0。(00000110==》11111001),得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果;负数取反是先将初始数值转换成二进制数(以-6为例,10000110),再取得二进制数的补码,之后对补码的每一位取反:即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。

补码:正数的补码等于它的原码;负数的补码等于反码+1

# include <stdio.h>
int main()
{ 
unsigned char  a=18,b;b=~a;printf(“~a=%d”,b); return 0; 
}

运行结果为: ~a= 237

#include <stdio.h>
int main()
{ 
char  a=18,b; b=~a;printf(“~a=%d”,b); return 0;
}

运行结果:-19

注意:

前一个程序结果很好理解,后一个因为a是带符号数据,因此~a=(11101101)2的结果是一负数的补码,转换为原码时,第1位符号位不变,对剩余的部分先减1,再全部取反,因此得到的二进制原码为:10010011,即十进制的-19。

在计算机中操作的是补码
对6取反(~6)
6的原码 0000 0000 0000 0000 0000 0000 0000 0110
6的反码 0000 0000 0000 0000 0000 0000 0000 0110
6的补码 0000 0000 0000 0000 0000 0000 0000 0110
计算机只能对补码操作,那么对6取反(~6),实际操作的是补码,每位取反
6的补码全部取反 1111 1111 1111 1111 1111 1111 1111 1001 (得到的这个数是最高为代表负数)
补码–>反码 -1 1111 1111 1111 1111 1111 1111 1111 1000
反码–>原码 取反 1000 0000 0000 0000 0000 0000 0000 0111
故~6=-7

已知补码如何求原码(真值)~
正数的补码反码与原码相同。

若已知补码为 1111 1000,如何求其原码呢?

(1)方法1:求负数 原码--->补码 的逆过程。

        注意:符号位保持不变!

    (A)先 - 1,得到 1111 0111

    (B)取反(符号位保持不变,其他位置按位取反 ),得到 1000 1000

(2)方法2:

        注意:符号位保持不变!

    (A)将这个二进制数中(即 1111 1000),除了符号位,其余位置按位取反,得 1000 0111

    (B)+ 1,得到 1000 1000

总结:
        -1 后,再取反   和 取反后,再+1  的效果是一样的。

       这就和  -(3-1)  和 (-3 +1) 是一个道理。
 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脚本自动定时打开链接_自动化构建系统

在软件开发过程中&#xff0c;特别是在一些大型多人合作开发的项目中&#xff0c;如何将各个人开发的不同模块集合为一个完整的系统&#xff0c;最终输出一个完整的目标文件&#xff0c;这个过程包括编译&#xff0c;发布&#xff0c;自动化测试等环节。这一过程的完善程度和流…

++ba--运算结果解析

int db&&a--; 此运算其实的操作为&#xff1a; db&&a,然后aa-1,所以d0&#xff0c;a-1. #include<stdio.h> void main() {/*double a97.3;double b98;double c;int c1;printf("%d\n",(int)(a/b));printf("%f",a/b);*/int a0,b2,…

python docker_Docker实践:python应用容器化

一、前言 容器使用沙箱机制&#xff0c;互相隔离&#xff0c;优势在于让各个部署在容器的里的应用互不影响&#xff0c;独立运行&#xff0c;提供更高的安全性。本文主要介绍python应用&#xff08;django&#xff09;跑在docker容器里&#xff0c;编写dockerfile实现镜像构建自…

Python与C++ 局部变量/全部变量作用域讨论

python分为def内和def外 C分为花括号内和花括号外

python删除对象引用_使用Python删除内存中的对象

我正在尝试使用这种方法删除python中的对象。我阅读了Python的文档&#xff0c;声明垃圾收集器将自动删除未引用的对象。def check(): class newOb(): def __init__(self,value): self.value value print self.value return None class ob: ins {} def cr(self,someuniqueid,…

mysql 默认事务隔离级别_上个厕所的功夫,搞懂MySQL事务隔离级别

“隔离级别” 出于MySQL四大特性(ACID)中的“I”&#xff0c;也就是隔离性。目的是实现数据、事务一致性“C”。MySQL在多线程并发场景下&#xff0c;可能会出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)这类并发问题&#xff0c;为了解决这些问…

Tg5032smn:高稳定性105℃高温

TG5032SMN是一款频率范围10MHz ~ 54MHz,具有高稳定的TCXO晶振&#xff0c;可与CMOS或限幅正弦输出。外部尺寸5.0 3.2 1.45mm&#xff0c;超小型,质地轻。该系列晶振的额定工作范围-40℃~&#xfe62;105C内可高稳定性工作&#xff0c;使得信号频率的误差很小。TG5032SMN与其他…

泰坦尼克号数据集_机器学习入门—泰坦尼克号生存率预测

项目名称&#xff1a;泰坦尼克号生存率预测1.导入数据这里使用kaggle kernel编写代码数据下载地址为&#xff1a;https://www.kaggle.com/c/titanic2.数据统计分析通过describe和info方法&#xff0c;我们可以发现Age&#xff0c;Cabin&#xff0c;Embarked和Fare的数据都有不同…

Python 爬虫利器一之 Requests 库的用法

简介 Requests是用python语言基于urllib编写的&#xff0c;采用的是Apache2 Licensed开源协议的HTTP库&#xff0c;Requests它会比urllib更加方便&#xff0c;可以节约我们大量的工作。 一、安装 pip快速安装&#xff1a;pip install requests 二、使用 import requestsresp…

firefox flash插件_巧用firefox下载视频资源

技术应用场景&#xff1a;1. 免广告播放视频(含vip)2. 下载各大视频网站的视频资源步骤&#xff1a;1.提前下载安装以下程序&#xff1a;火狐浏览器(Firefox)https://www.lanzous.com/i98jfne火狐flash插件 https://www.lanzous.com/i98jercVideo DownloadHelper插件 https://w…

台式电脑-时间和日期无法更改,提示需要管理员授权

使用系统自带功能修改一直不成功&#xff0c;此时&#xff1a;使用进入bios后台的方式进行修改&#xff0c;即可完成。

sdr 软件_无线电爱好者系列-1.通过SDR获取周围无线电信号及应用

一、什么是SDR?SDR就是Software Defined Radio,即软件定义无线电。之前的无线电通信系统都是基于特殊的硬件元器件完成无线电信号的接收和解码&#xff0c;例如混频器、滤波器、放大器、调制器和解调器、检波器等。而SDR是基于计算机完成相同的工作&#xff0c;也就是把无线电…

程序语言功能

C语言 用来写操作系统 java 写B/S架构的内容 C 写游戏开发 C# windows应用程序 不流行&#xff1a;2014年起&#xff0c;手机销售量超过电脑销售量 Python 大数据 人工智能 算法处理 爬虫 数据分析 机器学习 达到千万级的并发量--使用分布式来减压

c python 内存冲突_Python在计算内存时应该注意的问题?

我之前的一篇文章&#xff0c;带大家揭晓了 Python 在给内置对象分配内存时的 5 个奇怪而有趣的小秘密。文中使用了sys.getsizeof()来计算内存&#xff0c;但是用这个方法计算时&#xff0c;可能会出现意料不到的问题。 文档中关于这个方法的介绍有两层意思&#xff1a; 该方法…

爬虫1-爬虫入门

爬虫 通过编写程序来获取到互联网上的资源 需求:用程序模拟浏览器 输入一个网址 从该网址中获取到资源或者内容 """ File: 01入门.py Author: chde_wang Date: 2021-04-19 14&#xff1a;30&#xff1a;31 Description: """ # 爬虫 通过编写程…

notepad多行编辑_Windows 10 UWP 推荐 | 极具现代感的轻量化文本编辑器:Notepads

柒才也许你正在用VS Code, Notepad或者Sublime&#xff0c;但是相信很多小伙伴跟我一样&#xff0c;在快速记录笔记或者修改配置文件的时候还是会用Windows系统自带的记事本Notepad.exe&#xff08;毕竟启动速度快&#xff0c;界面清爽&#xff09;可是问题在于Windows 10自带的…

爬虫2-web请求与http协议

1web请求 1服务器渲染 在服务器那边直接把数据和html整合在一起&#xff0c;统一返回给浏览器 在页面源代码中可以看到数据 2客户端渲染 第一次请求只拿到html骨架&#xff0c; 第二次请求拿到数据&#xff0c;进行数据分析 在页面源代…

python中读取txt文件、统计其中所有字母出现的频度_Python编程小技巧:如何统计序列中元素的出现频度...

原标题&#xff1a;Python编程小技巧&#xff1a;如何统计序列中元素的出现频度实际案例 某随机序列中&#xff0c;找到出现次数最高的三个元素&#xff0c;他们的出现次数是多少&#xff1f; 对某英文文章的单词进行词频统计&#xff0c;找到出现次数最高的10个单词&#xff0…

爬虫3-request的get与post简单使用

requests.get # 安装request pip install requests # import requests # url "http://www.sogou.com/web?query周杰伦" # resp requests.get(url) # 地址栏链接 一定是get方式提交 # print(resp) # print(resp.text) # 拿到网页源代码 访问被拦截# import requ…

adsl服务器客户端配置cisco_【干货】Cisco路由排错经典案例分析

关注我&#xff0c;你的眼睛会怀孕对于网工来说&#xff0c;熟悉与掌握路由排错的思路和技巧是非常必要的。接下来&#xff0c;将对三例典型的路由故障排错案例进行分析。一、不堪重负&#xff0c;路由器外网口关闭1、网络环境某单位使用的是Cisco路由器&#xff0c;租用电信30…