c语言中按位取反-1怎么算
既然正数补码和源码一样,那么应该输出0111 1110的十进制数,但是为什么输出0 展开
c语言中-1的绝对值是1,二进制00000001,取反为11111110,-1为11111111,取反是00000000。
1、所有正整数的按位取反是其本身+1的负数;
2、所有负整数的按位取反是其本身+1的绝对值;
3、零的按位取反是-1(0在数学界既不是正数也不是负数);
0的原码:00000000000000000000000000000000
取反:11111111111111111111111111111111
最高位是1所以是负数,求其原始数据,方法是
再次取反加1(符号位不变)
取反:10000000000000000000000000000000
加110000000000000000000000000000001
所以是-1
扩展资料
C语言按位与运算符(&)
按位与运算将两个运算分量的对应位按位遵照以下规则进行计算:
0&0=0,0&1=0,1&0=0,1&1=1。
即同为1的位,结果为1,否则结果为0。
例如,设3的内部表示为
00000011
5的内部表示为
00000101
则3&5的结果为
00000001
按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x&0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x=x&077。以上用法都先要设计好一个常数,该常数只有需要的位是1,不需要的位是0。用它与指定的位串信息按位与。
为什么用绝对值表示?每个负的都是按绝对值表示么
这是二进制记录负数的运算公式,就是这样换算的,绝对值取反加1
-1转二进制的方法,1转二进制,取反加1,1的二进制是0000001,取反11111110加1为11111111
能关于上面给个过程么
上面的例子就是啊,主要是怎么解释,这还要代码?