C语言位运算题目

如题所述

一、位运算符c语言提供了六种位运算符:
&按位与
|按位或
^按位异或
~取反
<<左移
>>右移
1.按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001(1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a&255运算(255的二进制数为0000000011111111)。
main(){
inta=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2.按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下:00001001|00000101
00001101(十进制为13)可见9|5=13
main(){
inta=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3.按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:00001001^0000010100001100(十进制为12)
main(){
inta=9;
a=a^15;
printf("a=%d\n",a);
}
4.求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为:~(0000000000001001)结果为:1111111111110110
5.左移运算左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6.右移运算右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。turboc和很多系统规定为补1。
main(){
unsigneda,b;
printf("inputanumber:");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
请再看一例!
main(){
chara='a',b='b';
intp,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言位运算问题?
c语言位运算问题解答:要解答这个问题我们先来看一个例子,代码如下图一,图中右边是问题中得到代码,左边是这段代码的汇编指令。两种情况的不同点详细说明如下:第一种情况:printf("%d",2>>64);由图中的汇编代码可以看出,如果两个数都是常数的情况下,代码中是不含对应的汇编指令的,因为编译器...

c语言位运算问题9 |5为什么等于13如下图
9|5表达式 | 是位或运算符,运算规则如下:1|1=1;0|1=1;1|0=1;0|0=0;9的二进制形式: 00001001 5的二进制形式: 00000101 进行|运算: --- 等于: 00001101(13的二进制形式)所以:9|5=13 供你参考

下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?_百度...
第一题:3 这是一道位运算,a&0377等同于011&011111111的运算,这两个与一下值为011,也就是3 第二题:11 这也是位运算,先把3,10,15化为二进制,依次为:011,1010,1111.a|b&c先运行b&c得到1010,再跟a或运算(一位一位或)得到1011,也就是11.第三题: D) h\/2*(a+B)h\/2等于1,而代数中等...

C语言问题,在位运算中,操作数每右移一位,其结果相当于什么?若左移1位...
1、右移,除以2右移n位除以2的n次方;右移的概念和左移相反,就是往右边挪动若干位,运算符是>>;右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:inti=0x80000000;i=i>>1;\/\/i的值不会变成0x40000000,而会变成0xc0000000 2、左移,乘以2...

c语言位运算 求1个整数的二进制数有多少个1
\\n",n,solve(n)); return 0;}第一种方法:简单的运算一个整数中二进制中1的个数,位运算用了&和>>符号,即与和右移。时间复杂度为log2(n)。include<stdio.h>int solve(int n){ int ans=0; while(n) ans++,n&=(n-1); return ans;}int main(){ int n; ...

c语言的位运算疑惑
恩。分析下思路。先针对你的这个题目。1:040 是八进制的表示。换成十进制是 4*8+0*1=32 2:ASCII编码表中 32表示的是空格符号。 char中寸的是ASCII编码,所以是32 3:位移运算:>>表示右移位 我以8为例。8的二进制是1000, 8>>1对应的二进制形式就是1000——0100看到变化了没有。所以右...

C语言位运算。输入一个数,让该数的第3位,第10位,第13位 置1,让第7位...
include<stdio.h> include<iostream> using namespace std;int main(){ int n,a1,a2;scanf("%d",&n);a1=n&0xfb7f; \/\/该数的第3位,第10位,第13位 置1 a2=n|0x2408; \/\/第7位,第10位置0 printf("%d %d %d",n,a1,a2);} ...

c语言中,如何实现位运算?
c语言:取整型变量x中的第p位开始的n个bit位,可以采用位运算的方法。先向左移位,丢弃前面不需要的位,再通过向后移位,丢弃后面不需要的位,最后再向左移位到原来的位置,就可以了。1\/\/num&(num-1)=(1111)&(1110)=(1110)2\/\/num&(num-1)=(1110)&(1101)=(1100)3\/\/num&(num-1)=(...

C语言的位运算:-3>>2怎么算?结果是-1。大神们具体一点,谢啦_百度知 ...
以一个字节为例来说明:char ch=-3;在计算机中数值是用补码来存储的,故ch在内存中的内容为:11111101 >>2 右移2位,因为是有符号数,故前面补符号位1,结果为 11111111 (01被移走,前面补了两个1)这就是-1的补码 所以,结果输出会是-1 ...

有关C语言位操作的问题: 1&0=0要怎么理解。。符号&不懂
两个操作数进行位与操作时,先把操作数化成二进制数,然后每一位进行与操作,当对应的位同时为1时,结果为1,否则为0,题目是1&0,两个操作数都很简单,不用化成二进制数都知道答案,因为前面的位都是0,最后的位,一个为1,一个为0,所以结果为0,另举一例:7&5 第一步:化成二进制 00000...

相似回答