C语言中位运算问题!急

设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是多少?
3自己为什么前面会出来那么多的零?00000011 , 为什么不是 11 而是 00000011 .

x :10100111 ==> x+2 :10101001
3 :00000011 ==> ~3 :11111100
------------------------------------
x+2和~3取异或: 01010101
异或的意思就是相同的位等于0,不同的位等于1
所以答案就是1010101,即10进制的85

关于补充:因为一个char变量占1个字节,也就是8位,虽然3是二进制的11,如果要进行取异或计算的话,必须要补足8位才可以,所以3补足8位就是00000011
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-09-08
x :10100111 ==> x+2 :10101001
3 :00000011 ==> ~3 :11111100
------------------------------------
x+2和~3取异或: 01010101
所以答案就是 01010101,即10进制的85
第2个回答  2009-09-08
~3的结果为11111100,2+x的结果为10101001
则,异或的结果为01010101.(异或规则同号为0,异号为1,即0^0为0,1^0为1,等等)
第3个回答  2009-09-08
16位 机器吗?int是2位的还是4位的

c语言位运算问题?
第一种情况:printf("%d",2>>64);由图中的汇编代码可以看出,如果两个数都是常数的情况下,代码中是不含对应的汇编指令的,因为编译器已经省略了,编译器算出结果为0,直接把0传入给printf函数。第二种情况:int i=2;printf("%d",i>>64);此时i是个变量,编译器没法在编译时算出结果,这时就...

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

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

C语言中位运算符问题 这句话怎么解释啊
这句话的理解有这样一个基础,那就是右移n位相当于除以2的n次方,而这个基础就是对于无符号数来说的。比如无符号数8,如果用8位二进制表示,就是二进制的0000 1000,右移0位,也就是不移动,等于8,就等于8除以1,也就是8除以2的0次方;右移1位,0000 0100 ,等于4,就等于8除以2,也...

C语言位运算题目
一、位运算符c语言提供了六种位运算符:&按位与 |按位或 ^按位异或 ~取反 <<左移 >>右移 1.按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式...

C语言位运算中取反问题,急。。。
首先你输出是肯定用的 printf("%d",~a).int类型数据是有范围的 -32768~32767 [100]原=0000 0000 0110 0100 取反后为1111 1111 1001 1011 这个数值已远远超出了范围,发生溢出.但是这个数值是-101的补码,而计算机数字都是按补码存储的,所以他输出了-101.你放成ld,数值又不同....

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

c语言位运算
C语言中的位运算符用于操作二进制位。这些运算符直接对整数的二进制位进行操作,是低级语言操作的重要组成部分。它们对于优化程序性能、实现特定功能非常关键。具体的位运算符 1. 位移运算符:这两个运算符用于将二进制位向左或向右移动指定的位数。例如,`x << 2`表示将x的二进制表示向左移动两位,...

C语言 位运算
C语言中的位运算提供了一种高效的处理二进制数据的方法。首先,我们有取反操作,0取反变成1,1取反则变成0。对于位左移(<<),比如1<<n,意味着将1向左移动n位,相当于数值乘以2的n次方。右移(>>)与左移类似,数值除以2的n次方。接着是按位与(&),当1与任意数结合时,结果保持原数,0...

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

相似回答