在c语言中017777代表的真值为何是-1
发布网友
发布时间:2022-04-28 16:44
我来回答
共1个回答
热心网友
时间:2022-06-19 18:47
你少写了一个7,应当是0177777
在C中,有规定,以0开头的数为8进制整数
你看到的书是传统教材,当时的int数据占两个字节,一个字节8位,所以,0177777所对应的二进制数就是16个1。
计算机中,存储整数采用的是补码,对于负数,补码就是原码的反码+1。所以,1111111111111111转换为原码输出就是-1,过程:
1111111111111111-1 = 1111111111111110 反码
1111111111111110 对应的原码为:1000000000000001 (-1) 首位为符号,1表示负,0表示正,其余为数值。