‘壹’ c语言 什么叫位操作
第一题
#include<stdio.h>
main()
{
int a,b;
printf("请输入一个位于0~65535之间的正整数:");
scanf("%d",&a);
b=(a>>3)&15;//取四位
printf("b=%d\n",b);
}
第二题
#include <stdio.h>
main()
{
int a,b,c;
scanf("%d%d",&a,&b);
if(a<b)
{c=b;
b=a;
a=c;}
while(a!=b)
{a=a>>1;
if(b>a)
break;}
if(a==b)
printf("yes");
else
printf("no");
}
你看看对不对
‘贰’ C语言中按位与(&)运算符是什么意思
是将二进制数按照位的对应相与,得到一个新的二进制数。1与0为0;1与1为1;0与0为0。
分析如下:
就是二进制的每一位相与。
比如:1010 0011& 0000 1111,结果为0000 0011。也就是与上0相当于把那位数清0,与上1相当于把那位保留。
(2)c语言位操作扩展阅读:
1、按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为11111111)。
‘叁’ C语言中的位运算是怎样的
如果你把所有的操作数都用二进制来表达就清晰了,如下
位与 & 相同位按与来运算即可 如:
1 & 2 =0
-------------
二进制是这样的 01 & 10 = 00
位或 | 一样,按位来或即可
1|2 = 3
--------------
二进制是这样: 01|10=11
其他位运算都是按二进制位来运算的,你转换成2进制就好理解了
‘肆’ C语言中位操作
首先32位系统-3默认为整形占4字节(32个位),二进制表示11111111
11111111
11111111
11111101得来方法:
3的二进制位00000000
00000000
00000000
00000011,取反补1后等到上面的值
再看下-1的二进制11111111
11111111
11111111
11111111同样是1取反后补1
下面看下移位因为第一位为1,右移时根据最高位补位,移1位后值为:
11111111
11111111
11111111
11111110
再移动1位就变成了:11111111
11111111
11111111
11111111后面不管你右移多少次始终是这个结果,所以-3右移2次以上后值就是-1了。
‘伍’ c语言位运算是什么
运算:C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。
在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。
当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
运算符号:
比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补0)位移。
例如,将11100011右移3比特,算术右移后成为11111100,逻辑右移则为00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
‘陆’ C语言位运算
按位与 | 按位或 ^
按位异或 ~ 取反 <<
左移 >> 右移<<
1. 按位与运算。按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
2. 按位或运算。按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13 main(){ int a=9,b=5,c; c=a|b; printf("a=%d/nb=%d/nc=%d/n",a,b,c); }
3. 按位异或运算。按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf("a=%d/n",a); }。
5. 左移运算。左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数, 高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
‘柒’ c语言位运算
这个很简单,你打开电脑的计算器,将521输入,然后用二进制显示,你看到的是:1000001001,
123是:1111011;与123 按位与的结果就是0000 1001;用十进制显示的时候就是9,其他的计算也是这样算出来的,你试下就知道了,在此我就不一一举例了。
&:这是与操作,只有1&1才能是1
|:这是或操作,有一个是1结果就是1
~:取反操作,
‘捌’ C语言位操作运算符 &,|,~,^,<<,>>是干什么的
& 按位与运算,如:1010 & 1100 = 1000
| 按位或运算,如:1010 & 1100 = 1110
~ 非运算,如:a = 1010; ~a = 0101
<<左移,如:1110 << 1 = 1100
>>右移,如:1000 >> 1 = 0100
‘玖’ c语言按位运算
unsigned在内存中占2字节即十六位,八进制123456转换为二进制1010011100101110,b=a>>4 b=0000101001110010
c=0000000000001111 b&c即按位与,二进制对应位上全是1才为1,否则为0
d=0000000000000010
即d=2
‘拾’ c语言中按位与。。按位或什么意思
位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码)00000001 (1的二进制补码)可见9&5=1。