//如果a = 2,那么二进制位 0 000 0010,~ (a)的二进制就是 1 111 1111.结果不该为-3啊,请问这个位运算符是怎么取反的啊。谢谢!
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int a = ~(2);
printf ("%d\n",a);  //为什么结果是-3
system ("pause");
return 0;
}
解析:
a为int类型 通常占4个字节
2的原码:0000 0000 0000 0000 0000 0000 0000 0010
取反: 1111 1111 1111 1111 1111 1111 1111 1101
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反:     1000 0000 0000 0000 0000 0000 0000 0010
加1           1000 0000 0000 0000 0000 0000 0000 0011
所以是 -3


C语言中的按位异或:
C语言中^为按位异或运算符,若两个二进制位相同,则结果为0,不同为1
#include "stdio.h"
main()
{
int a=6,b=10,c;
c=a^b;
printf("%d",c);
}
函数输出结果为12
将6和10分别转换为2进制数为0110(前边补了个0)和1010。然后按照定义进行异或运算
0110  a
1010  b
1100  a和b最左边第一位和第二位不相同,所以分别为1,第三位和第四位相同,所以分别为0
二进制数1100转换为10进制数,结果是12。


来源:http://zhidao.baidu.com/question/500053613.html?qbl=relate_question_3&word=C%D3%EF%D1%D4%B0%B4%CE%BB%C8%A1%B7%B4
http://zhidao.baidu.com/link?url=Mw5F7GgozJhkCG5lEG7bjBRR4CaLmkUynqe2ZU4vZ6Cm4l6mtY6CG9KEKZUFZXcisknT-AIuh3sjHsceQPwBhq

c语言的位取反和按位异或相关推荐

  1. C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~

    借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...

  2. c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -

    最佳答案 你的概念不正确,按位运算,只对内码进行操作,不管类型,而反码/补码是针对有符号整型的(符号位不变) 对负数按位取反,得到的是正数,它的符号位也会取反的 追问: 哦,内码是不是补码呢?-19的 ...

  3. 什么叫取反_取反位什么意思_c语言按位取反什么意思

    PHP中使用按位取反(~)函数创建后门 - 微信公 580x300 - 60KB - PNG PHP中使用按位取反(~)函数创建后门 - 微信公 310x145 - 26KB - JPEG [东方新闻 ...

  4. go语言按位取反 | goland按位取反

    很多编程语言使用 ~ 作为一元按位取反(NOT)操作符,Go 重用 ^ XOR 操作符来按位取反: // 错误的取反操作 func main() {fmt.Println(~2) // bitwise ...

  5. c语言按位取反 补码,求C语言 按位取反?

    0001 取反 1110 符号位为1,取反+1为 1010 转化成10进制为 -2 正数的原码,补码,反码都相同,都等于它本身 负数的补码是:符号位为1,其余各位求反,末位加1 反码是:符号位为1,其 ...

  6. keil c语言中位取反,关于按位取反“~”的故事

    操作系统:WIN7 32位家庭版, XP 编译环境:C-FREE5.0 编译器:  标准C89(32位) 代码1: #include#includeint main(void) { /* unsign ...

  7. c语言单片机位取反指令,51单片机位及位操作指令

    我们已经习惯了"位"一位就是一盏灯的亮和灭,而我们学的指令却全都是用"字节"来介绍的:字节的移动.加法.减法.逻辑运算.移位等等.用字节来处理一些数学问题,比如 ...

  8. c语言int型按位取反,C语言按位取反快速计算

    先说结论 假设x为signed int,也就是说它的补码表示中第一位表示符号(1:负:0:正),那么~x=-(x+1) 证明 计算机内部使用补码表示,则问题相当于求证:当x为signed int时,( ...

  9. 逆向基础之C语言 第一篇

    逆向之C语言 00_C语言概述 知识点1 [写代码的过程] Visual C++ 6.0 安装VC6.0 配置兼容性 创建c工程 添加源文件 知识点2 [完整的C代码分析] 1.案例1:hello i ...

最新文章

  1. MySQL优化篇:SQL优化流程
  2. Docker(十一):Docker实战 安装 PHP 5.6、7
  3. 电气论文实现:对大规模用户负荷曲线进行聚类
  4. 使用Packet.dll和npf.sys实现原始数据包的发送和接收
  5. python - 定时清理ES 索引
  6. 2010年下半年软件评測师(下午)试题分析与解答
  7. python 两阶段聚类_Python,如何对多元时间序列进行聚类?
  8. ubuntu 删除opencv4_ubuntu16.04 卸载重装Opencv
  9. 用python写论文_[文章] 编写高质量 Python 的 6 个技巧
  10. 关于idea注释等颜色设置
  11. 用gpg加密软件加密文件
  12. 微博粉丝精灵_微信全国500强、微博粉丝数省内领先……看快报这群年轻人如何运营一个个人气平台...
  13. Python 用异常处理改写猜数游戏程序
  14. 詹姆斯•高斯林/关于Java的故事
  15. Unity3d 游戏汉化之IL注入文本替换--木石世纪
  16. 线上jvm 内存飙高排查
  17. 一.什么是java面向对象 (小白神器)
  18. 国内食品品牌策划公司排名,食品品牌设计公司哪家好?2021最新
  19. 关于计算机专业励志的话,电脑行业励志语录
  20. 10种常见网站安全攻击手段及防御方法

热门文章

  1. alternate端口什么意思_alternate是什么意思_alternate在线翻译_英语_读音_用法_例句_海词词典...
  2. 疫情之下,君子签电子合同助力员工入职、经销管理、租房正常运作
  3. Linux(Ubuntu)配置防火墙
  4. 洛谷_P2655 2038年问题(尚贤)
  5. 5G NR学习理解系列——MATLAB5G信源的生成之SSB参数配置
  6. linux英伟达显卡内核不匹配,解决ubuntu16.04循环登录问题,原因为linux图形化界面和英伟达显卡不兼容...
  7. 非对称密码体制(公钥密码体制)中最基础的思路——MOD的运算
  8. Plants vs. Zombies(二分)
  9. jenkins集成jmeter
  10. python 三元表达式_Python三元表达式