首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解一题:关于左移和右移的知识点,该如何处理

2012-04-10 
求解一题:关于左移和右移的知识点例2.9 设c为一个字符,且(c3c3)&&c0为真,问c的字符代码是什么?解:

求解一题:关于左移和右移的知识点
例2.9 设c为一个字符,且(c<<3==c>>3)&&c>0为真,问c的字符代码是什么?

解:因为(c<<3==c>>3)&&c>0为真,所以c<<3==c>>3和c>0均为真.于是可设c是如下形式的符号:
 
  0???????

其中问号"?"表示尚不确定的值.

  c<<3后: ?????000 (1)

  c>>3后: 0000???? (2)

由于(1)和(2)相等,所以(1)和(2)的二进制形式均是
 
  00001000 (3)

由于(3)是由c字符左移3位或者右移3位得到,所以c字符的代码应是01000001,所以,c=01000001(二进制)=0101(八进制)=‘A’。


疑问:为什么(3)是由c字符左移3位或者右移3位得到,所以c字符的代码为01000001?

[解决办法]
这个问题其实很好理解
c<<3后: ?????000 (1)

c>>3后: 0000???? (2)
1=2;
所以移动后的数组是000??000的形式。说明1,2位和7,8位的01表达是一样的。其他位置都为0
所以就有四种可能
00,11,10,01
00前三种导致c的值《=0
由于条件说c》0
所以只有01000001之一种可能

热点排行