举个例子
~100=-101,
首先看等号左边
(100)
的二进制表示为:
0110
0100
按位取反的意思就是每一位取反,0变1,1变0
所以:
~100
的二进制表示为:1001
1011
所以等号左边=1001
1011
再看右边
-101.
一旦看到出现负数,那么这个数一定是按有符号数的规则来表示的。一个二进制数
按位取反并加一以后就可以得到它自己的负数的补码,也就是说:
~x+1=-x
所以,我们把101按位取反加一
先取反:
~101=10011010
再加一:
~101+1=10011011=-101
所以等号右边=10011011=左边,所以等号成立。
p.s:补充一句,计算机内存里的逻辑存储位是非常复杂的,我这里即使讲得再清楚也无法保证你完全明白。
一般来说,汇编语言的书的开头部分会详细讲解这部分知识以服务于汇编语言,请参阅之。
c语言i++和++i的区别:
1、i++式子值为原来的值,就是通俗说的“先赋值再加1”;
2、而++i式子值为i变化后的值,也就是“先加1后赋值”。
而在for循环中,如果要表示递增,两种都可以。
例如:
如果i的初始值是0,使用后再加1,则输出i++为0;
如果i的初始值是0,使用前先加1,则输出++i为1。
扩展资料:
C语言运算符的特点
1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
3、不同的变量类型可以用结构体(struct)组合在一起。
4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
5、部分的变量类型可以转换,例如整型和字符型变量。
6、通过指针(pointer),C语言可以容易地对存储器进行低级控制。
7、预编译处理(preprocessor)让C语言的编译更具有弹性。
i++是表示i自加1
等价与
i=i+1也就是说
先取i再i自加!++i
就是直接取++i
如果
i=1的话
i++和++i的结果都是2
但是i++是先取i
而++i是直接取
i的结果!--i
和i--同理
自减1