c语言问题

[复制链接]
查看11 | 回复3 | 2011-11-15 21:56:54 | 显示全部楼层 |阅读模式
第一个i直接为43是因为c的值就是43无需转换而第二个赋给c的值是带单引号的‘\376’ 是八进制的表示形式,转换成二进制是11111110显然它在计算机中被表示成一个负数。因为负数的补码等于其绝对值的原码按位取反再加一,所以如果知道一个负数的补码,我们可以先减一再按位取反就得到了该数的绝对值。11111110 - 1 = 11111101按位取反后得
00000010,即十进制的2....
回复

使用道具 举报

千问 | 2011-11-15 21:56:54 | 显示全部楼层
C=43 因为43是正数,在机器内部数字都是以补码形式表示,正数的补码不变。C=\376(八进制) = 254(十进制)=1111 1110,1111 1110所对应的真值计算如下:同样的办法对数据位取反加1来求原码:1111110取反得0000001,再加1得,0000001+0000001=0000010;符号位不变,再把它放上就是100000...
回复

使用道具 举报

千问 | 2011-11-15 21:56:54 | 显示全部楼层
c='\376' c已经变成8进制数了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行