位运算~问题

设a=0111
那么~a应该是 ???????
还有就是0111是什么数?十进制 还是二进制?我看的是自学考试的高级语言程序设计。这本书将的不是很详细,每看到不懂的就需要网上查?各位教授帮忙。

1楼的回答是有问题的。
在C语言里,整形常量可以有8进制,十进制,十六进制三种表示方式。
十进制与正常的表述类似,如a=111; 那就是说a的值是111;
而八进制整数常量的表示,以数字前面加0表示,也就是a=0111,则表示是八进制的111,
111(八)=1*8*8+1*8+1=73(十)
而十六进制整数常量的表示是在数字前面加0x,如a=0x111,表示 十六进制的111,
111(十六)=1*16*16+1*16 +1(十)
~a是取反操作,本质上是二进制的表示形式再按位取反(0变1,1变0),但这样做比较麻烦,简单的计算方法是十进制的数值取绝对值后加1,再变负数就行了,
如:111(八)=73(十),~a的值就是 -(73+1)=-74
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-23
~是按位取反运算符。若a=0111,那么~a=1000(在二进制中0取反是1,1取反是0)
二进制是由0和1组成的,而十进制是0到9组成,计算机只能识别二进制数且按位运算符的对象只能是二进制,由此可能判定你所提到的0111是二进制,再说按照我们的平时表达习惯也不会在十进制前加0的。本回答被网友采纳
第2个回答  2011-01-23
应该是十六位0000000000000111二进制数,把位运算再看看

位运算~问题
1楼的回答是有问题的。在C语言里,整形常量可以有8进制,十进制,十六进制三种表示方式。十进制与正常的表述类似,如a=111; 那就是说a的值是111;而八进制整数常量的表示,以数字前面加0表示,也就是a=0111,则表示是八进制的111,111(八)=1*8*8+1*8+1=73(十)而十六进制整数常量的表示...

~位运算,第4个,用二进制算一算嘛,再讲讲原理,谢谢,为什么~13=-14
14=00001110,-14=~14+1=11110010=13 在计算机中,负数以其正值的补码形式表达。也就是原码取反后二进制数+1.即A=~A+1,A为二进制数。负数源数据不管符号的正值称为原码,对其进行取反,取反后的数据称为反码。比如原来数据为-14,先不管其符号,将原数据正值(二进制)14为00001110,取反后...

int a=10; int i=~a; 结果i=—11,为什么? 在Java中 谢谢
~是位运算中的非运算,在计算机中是以补码存储的,a=10,是正数,补码为其自身,10化为二进制为00001010,求非后为11110101,符号位为1,这是一个补码,将其换算为真值,符号位不变,将后七位取反,为0001010,然后再加1,则整个数为10001011,也就是-11....

位运算算法小问题
回答lz的问题:011<<2向左移动2位,低位补0.所以是1100.8位是1个bit,变量类型都是bit的整数倍的。比如char是1bit=8位。int是4bit=32位。没有9位的数据类型。 16位的倒是有:short int就是16位的。对于int型的计算不写成32位也是为了方便。一般写8位在运算的时候已经够用了。它的表示范围...

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

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

位运算问题,求出2进制最高位的数
(4&(1<<2))>>2;的意思是先是2向左移一位,得到4,4和4按位与后得到4,4左移两位得到1;明白这样的流程你就不会迷茫了。

java中的“&”,“|”,“^”,“~”用法
与0&&0 =0 1&&0 =0 0&&1 =0 1&&1 =1 或 0||0 =0 1||0 =1 0||1 =1 1||1 =1 非 ~1 =0 ~0 =1 异或是 真^假=真 假^真=真 假^假=假 真^真=假 例子 11001010 与 00011011 按位与、 按位或、 按位异或 00001010 11011011 11010001 按位非是自己运算 是00110101 推荐书目:(可以...

c语言位运算问题:下面的语句在vc++中运行 为什么打印输出的是-10呢...
-),int和unsigned的9都是:0000000000001001。~计算即按位取反以后就变成:1111111111110110。这个数由于开头是1,所以对于int来说是负数,对于unsigned来说当然还是整数,值确实是有区别的。但是,这里的输出相同,并非受到整数类型的影响。LZ可以去标准库头文件观察printf的声明,除了第一个参数外,后面参数...

位运算或运算
位运算:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算,就是直接对整数在内存中的二进制位进行操作。逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合...

相似回答
大家正在搜