C语言中“~”有什么意义?
发布网友
发布时间:2022-03-01 08:45
我来回答
共9个回答
热心网友
时间:2022-03-01 10:15
您好
在c语言中 ~ 是取反的意思
就是取一个数的反码
比如一个4位的数0x000f取反就是0xfff0
<<是左移
temp += 0<<i就是temp自加一个数
这个数是0左移i位
详细文档:
求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110
左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6. 右移运算 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
热心网友
时间:2022-03-01 11:33
1、用在scanf里面,诸如此类
scanf("%d",&a);
就是取地址运算,此例中,就是把从键盘缓冲去读一个值(scanf的作用),然后赋值到内存中a变量对于的地址中
2、单一操作数前面作用是
取地址,例如:int
*p,
a;
p=&a;
3、两个
操作数
的情况则表示位运算中的
与
运算,如二进制操作:1101
&
1010
=1000
望采纳!!!
热心网友
时间:2022-03-01 13:07
~是按位取反,即把变量在内存中的值的二进制形式的各位,1变成0,0变成1.
比如67的二进制是01000011,~后变成10111100
<<是位左移,比如67<<3,就是把01000011左移3位,变成00011000.
0<<i没有意义,还是0,temp+=0,temp不变.这句话完全没有意义.
热心网友
时间:2022-03-01 14:59
~是C/C++里面的单目运算符,它按位取反后返回。
你的这个:temp += 0<<i;
1. 0左移动i位;
2. temp自加上1的返回值。
~与你的这个左移、自加没有任何关系 ^_^
热心网友
时间:2022-03-01 17:07
~在位运算的时候是取非的意思
~x就是对x化成二进制后取非值
<<这个是位运算<<i就是向左移动i位
请楼主查看一下相关的位运算
热心网友
时间:2022-03-01 19:31
~这个是按位取反运算符(单目运算符)
temp += 0<<i;//这个就是i左移动0位后加上temp的值再赋值给temp
热心网友
时间:2022-03-01 22:13
temp等于0小于i ,然后自加1
热心网友
时间:2022-03-02 01:27
<<这个是左移符,具体的我也不太清楚,我只知道把10进制的转换成2进制的,然后在移动
热心网友
时间:2022-03-02 04:59
这是C么?
明明就是C++嘛