C语言学习

您所在的位置:网站首页 c语言的求和符号怎么输入 C语言学习

C语言学习

2024-07-15 15:01| 来源: 网络整理| 查看: 265

C语言学习—运算符—“~”取反符号的理解

5~ = -6;-5~ = 4; 因为数据在计算机中是以二进制存放的。要知道原理,我们得先了解正负数在计算机中的存放形式:

正数:原码=反码=补码 负数:反码=原码取反;补码=反码+1;负数在计算机的存储方式是以补码对形式存在的。

先看一下正数的取反符~的运算: 以5为例: 5是正数的原码=反码=补码(不用变换): 原码: 00000000 00000000 00000000 00000101 5“~”取反运算(逐位取反,包括符位): 11111111 11111111 11111111 11111010 取反后的二进制是负数,所以要以补码的形式存放,所以将其转换成补码: 原码取反(不是取反运算,不包括符号位,符号位保留): 10000000 00000000 00000000 00000101 如何+1得到补码: 10000000 00000000 00000000 00000110 这样就得到一个负数-6了。这就是正数取反的运行过程。

再来看一下负数进行取反运算符运算过程: 以-5为例: 先写出-5的原码: 10000000 00000000 00000000 00000101 二进制符号位有负数,所以我们要先求出他的补码才进行~取反运算符的运算 反码=原码(不包括符号位,符号位保留)逐项取反: 11111111 11111111 11111111 11111010 补码=反码+1: 11111111 11111111 11111111 11111011 ~进行取反运算符的运算,逐项取反(包括符号位): 00000000 00000000 00000000 00000100 这样就得到一个+4了。

总结: 1.取反运算符运算时,负数进行取反的时候要保留符号位,符号位不变; 2.取反运算符进行逐项取反运算时,全部二进制都进行取反,包括符号位。 分清楚以上两点,什么时候符号位保留,什么时候符号位也取反,分清楚运用~时就不会出错了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3