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

请教:k2为什么等于-12?如何计算的呢

2013-08-01 
请问:k2为什么等于-12?怎么计算的呢?#include stdio.hvoid main(){short i013,k2//i11k2~iprintf(

请问:k2为什么等于-12?怎么计算的呢?
#include <stdio.h>

void main()
{
    short i=013,k2;//i=11 
                
    k2=~i;                     
    printf("%d",k2);


请问:k2为什么等于-12?怎么计算的呢?
[解决办法]
i=013是八进制
那么其16进制是0xB
k2是其取反值,那么k2就是FFF4
高位是1是负数,负数是补码,那么他的绝对值值为取反+1,
又变成013+1(八进制)14=12(十进制)
所以输出-12(因为是负数)
[解决办法]
11的二进制:00001011
~是取反:k2的二进制:11110100(补吗)
11110100的原码:10001100=-12
[解决办法]
13的二进制是
1011.正数,符号位为0.假设位单符号位,
原码即为01011,
~取反.
即为10100(反码),
原码为符号位不变,逐位取反,末尾+1.
故原码为11100.
十进制为-12.
因此得到-12.
[解决办法]
八进制013=11十进制 = 1011二进制
16位取反
1111 1111 1111 0100

第一位是1,说明是负数
计算机都是用补码存储,因此上面一大串看成补码
取反加1
即-12
[解决办法]
i=013是八进制
那么其16进制是0xB
k2是其取反值,那么k2就是FFF4
高位是1是负数,负数是补码,那么他的绝对值值为取反+1,
又变成013+1(八进制)14=12(十进制)
所以输出-12(因为是负数)

热点排行