二进制补码:1000000000000000的真值是多少?
二进制补码:1000000000000000的真值,如果是定点小数的二进制补码,则为-1,如果是定点整数的二进制补码,则为-32768。
数有字长规定。如果是 4 字节整型, 最高位是符号位。正数的源码,反码,补码 是一样的。
负数才分 原码,反码,补码。计算机为了充分利用 内存能表达的 数据点,假定正0负0一样。数据具体范围 在 编译器 头文件 limits.h 中 有明确 规定。
INT_MAX,INT_MIN。也可以打印出来看。int a=0x8000;printf("%d %u %x\n",a,a,a )。
扩展资料
[+0]原码=0000 0000, [-0]原码=1000 0000。
[+0]反码=0000 0000, [-0]反码=1111 1111。
[+0]补码=0000 0000, [-0]补码=0000 0000 。
+0和-0的补码是一样的。即 0的补码只有一种表示。
这里解释一下[-0]补码是怎么得来的。
负数的补码就是反码整体加一。符号位上的进位舍弃。(所以,舍弃了符号位的补码的第一位是数值位,不是符号位,符号位舍弃了)
另外解释一下原码符号位和补码符号位的关系,补码的符号位不是保持原码的第一位不变,而是 符号位不变,[-0]反码的第一个1是符号位,尾数中的7个1是数值位,尾数加一后。
数值位产生了进位,1111 1111+1=1 0000 0000(计算补码的过程中,并不是先保证第一位不变,而是保证符号位不变,保证补码规则是反码整体加一)。