c语言按位取反~

   更新日期:2024.05.07
-5
首先我们现在的机器是32位的(楼主可以不必要理会)
所以4的二进制为
0000 0000 0000 0000 0000 0000 0000 0100
而它的取反是
1111 1111 1111 1111 1111 1111 1111 1011
可以发现最高位是1,所以是负数(因为是int型,如果是unsigned就不能说是负数)。
但是,还要通过补码的形式进行输出(谭浩强第二章有说)
补码是:按位取反再加1
所以也就是把1111 1111 1111 1111 1111 1111 1111 1011再取反
成0000 0000 0000 0000 0000 0000 0000 0100
然后再加1
就成0000 0000 0000 0000 0000 0000 0000 0101
所以得到答案为-5

对于16位机子,4的2进制表示如下
00000000 00000100
取反后为
11111111 11111011
即-5

验证如下
#include <stdio.h>
int main()
{
int a=4;
int c=~a;
printf("%d\n",c);
}
输出结果为
-5
请按任意键继续. . .

  • 15136702767 :c语言中的位运算符中‘按位取反’是怎么运算的
    钮凯闵4728 :答:使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。例如,假如计算机是32位的,接下来要计算~5的值,计算过程如下:5 的二进制表达式...
  • 15136702767 :c语言,按位取反。
    钮凯闵4728 :答:C语言的逻辑运算包括与、或、非 按位取反使用运算符~如0xFF按位取反为~(0xFF)按位取反后的结果为0x00 需要注意的是,C语言中的逻辑运算&和&&是不同的 0xFF&0xA0=0xA0 而0xFF&&0xA0=1 一个运算符是按位操作...
  • 15136702767 :单片机取反符号~和!的区别,求教。
    钮凯闵4728 :答:他们的区别如下:1、!它返回的值只有两种状态0或者1;2、~是按二进制位取反它的返回值有多种,具体取决于具体数值。如果在单片机上一个字节8位分别控制8个端口,假设无符号数初始值为1,第1个端口开其它全关。!后...
  • 15136702767 :按位取反~(~1<<1)另外C语言负数按位取反是啥啊
    钮凯闵4728 :答:按位取反就是每一位上0变成1,1变成0 比如2的二进制表示为00000000 00000010 按位取反后就变成 11111111 11111101 按位取反~(~1<<1)先是~1 结果是11111111 11111110 然后左移一位<<1 结果是 11111111 11111100 然后...
  • 15136702767 :C与C++中按位取反(~)的问题
    钮凯闵4728 :答:我个人认为是编译器对取反后的数值类型判断错误 这一点可以通过下列代码得到确认 unsigned short dd = ~d;cout<<~a<<endl<<~b<<endl<<~c<<endl<<dd<<endl<<~e<<endl<<~f<<endl;输出结果为:--- -2 -2 ...
  • 15136702767 :求c语言中~6的值
    钮凯闵4728 :答:~符号是 按位取反符 6的二进制是 0000 0000 0000 0000 0000 0000 0000 0110 取反后就是 1111 1111 1111 1111 1111 1111 1111 1001 最高位是符号位. 1 代表是负数.负数的源码的补码 加 1 的十进制的相反数,...
  • 15136702767 :c语言中~0表示什么意思 ~运算符怎么运算 ~13等于多少
    钮凯闵4728 :答:~0 等于1 ~13等于2 1.在电脑里面无论什么数字都是按二进制储存的,0(1位的十进制数)就储存为0(1位的二进制数),13(2位的十进制数)就储存为1101(4位的二进制数)。2. ~ 就是把二进制形式下的每一位取反(1...
  • 15136702767 :c语言中~x什么意思
    钮凯闵4728 :答:是一种运算符,叫按位取反,使x的二进制位取反 例如~45,二进制是~101101,结果为010010
  • 15136702767 :C语言~12 按位取反的结果 是什么?
    钮凯闵4728 :答:看看除符号外的数:0001101 是13 所以这个数是-13 所以:~12=-13 这是百科上的相关知识点:【求-7的补码。 】因为给定数是负数,则符号位为“1”。后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位...
  • 15136702767 :C语言中,~7(取反)等于多少,为什么?
    钮凯闵4728 :答:-8 以8位来算,7存储时是00000111,取反就是11111000,将补码换算过来就是-8
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网