C语言的位运算中,~0为什么等于-1呢?怎么不是1呢?

如题所述

按位取反,0就是 32个0bit(针对int类型), 取反后是32个1bit即16进制的0xffff_ffff ,而-1==0xffff_ffff,所以0取反就是-1。。。怎么算出来很简单, 计算机中数据是补码形式存储, -1对应的补码是1取反+1, 1取反==0xffff_fffe, 那么再+1就是 0xffff_ffff。。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-07
"~" 是指位元运算.
你要0 => 1, 1=> 0, 这叫做逻辑运算, 应该用 "!"

请再多查查书, 看清楚差异.追问

~这是位运算中的取反运算啊

本回答被网友采纳

C语言的位运算中,~0为什么等于-1呢?怎么不是1呢?
按位取反,0就是 32个0bit(针对int类型), 取反后是32个1bit即16进制的0xffff_ffff ,而-1==0xffff_ffff,所以0取反就是-1。。。怎么算出来很简单, 计算机中数据是补码形式存储, -1对应的补码是1取反+1, 1取反==0xffff_fffe, 那么再+1就是 0xffff_ffff。。。

C语言按位求反运算为什么这个是-1?
0的二进制表示0000 0000 按位取反后,得到1111 1111 这个数字转换为十进制数字就是-1

c语言中~0表示什么意思 ~运算符怎么运算 ~13等于多少
~0 等于1 ~13等于2 1.在电脑里面无论什么数字都是按二进制储存的,0(1位的十进制数)就储存为0(1位的二进制数),13(2位的十进制数)就储存为1101(4位的二进制数)。2. ~ 就是把二进制形式下的每一位取反(1变0,0变1),所以0(0)就是1(1),13(1101)就是2(0010)。

~是什么意思 在C语言中,~0代表什么
~是c语言中的位运算符:取反。0在内存中的存储方式是所有位为0,0000000000000000 那么按位取反后位16个1(如果整形在你的机器上站16位),那么表示的数为-1。

C语言 位运算
C语言中的位运算提供了一种高效的处理二进制数据的方法。首先,我们有取反操作,0取反变成1,1取反则变成0。对于位左移(<<),比如1<<n,意味着将1向左移动n位,相当于数值乘以2的n次方。右移(>>)与左移类似,数值除以2的n次方。接着是按位与(&),当1与任意数结合时,结果保持原数,0...

C语言——位运算
本文将介绍C语言中的位运算,它允许程序员直接操作二进制位。二进制位,或“位”,仅包含0或1。在计算机中,数据以二进制形式表示,执行的指令亦是如此。计算机内部的数据以补码形式存储。这意味着,对于数字的二进制表示,最左侧的位(符号位)指示数字是正还是负。位运算包括:取反运算、左移运算、...

c语言位运算会不会改变原变量的值
位运算不会改变原变量的值。要改变原变量的值需要经过赋值表达式实现。~取反,0取反是1,1取反是0 <<是左移,比如1<<n,表示1往左移n位,即数值大小2的n次方 >>右移,类似左移,数值大小除以2的n次方 &按位与,1与任意数等于任意数本身,0与任意数等于0,即1&x=x,0&x=0 |按位或...

c语言中按位取反-1怎么算
c语言中-1的绝对值是1,二进制00000001,取反为11111110,-1为11111111,取反是00000000。1、所有正整数的按位取反是其本身+1的负数;2、所有负整数的按位取反是其本身+1的绝对值;3、零的按位取反是-1(0在数学界既不是正数也不是负数);0的原码:00000000000000000000000000000000 取反:...

c语言,当x=0,y=-1时,x|y为什么等于-1?
-1是补码 它是两个int型

c语言关系运算中负数是按0还是按1
1、关系运算符中是判断逻辑,而不是正负;2、逻辑只有真假,是0即假,非0即真;3、按你所说负数当然是真咯!如果满意,请采纳!

相似回答