为什么c语言中-1以八进制输出是37777777777
而为什么十进制输出是-1,那输出的3777777777转成十进制怎么得到-1,肯定得不了啊!37777777777转我十进制不是很大一个数吗?怎么会是-1呢...
而为什么十进制输出是-1,那输出的3777777777转成十进制怎么得到-1,肯定得不了啊!
37777777777转我十进制不是很大一个数吗?怎么会是-1呢 展开
37777777777转我十进制不是很大一个数吗?怎么会是-1呢 展开
展开全部
首先,你的机器是32位机,也就是1个字占32个bit位,这样一个字最多可表示的十进制数字为 2^32 = 4294967296。然后在该字中存放-1,这样该字的值为
4294967295 转换为8进制就是3777777777
4294967295 转换为8进制就是3777777777
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从上面看你的编译器里的int是占两个字节!!
-1的补码是这么算出来的:
(0000
0000
0000
0001)取反=1111
1111
1111
1110
1111
1111
1111
1110
+
1
=
1111
1111
1111
1111
而1111
1111
1111
1111化成8过制就是
177777
当int
以%d输出的话
1111
1111
1111
1111
就是以有符号十进制的形式显示也就是:-1
当int
以%o输出的话
1111
1111
1111
1111
就是无符号的八进制形式显示也就是:177777
-1的补码是这么算出来的:
(0000
0000
0000
0001)取反=1111
1111
1111
1110
1111
1111
1111
1110
+
1
=
1111
1111
1111
1111
而1111
1111
1111
1111化成8过制就是
177777
当int
以%d输出的话
1111
1111
1111
1111
就是以有符号十进制的形式显示也就是:-1
当int
以%o输出的话
1111
1111
1111
1111
就是无符号的八进制形式显示也就是:177777
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额,你要学过补码就清楚了
若是早期的turbo c中以2个字节存储一个标准整型数
-1应该是以1111 1111 1111 1111来存储的,你焕化成八进制就是
377777
而你所说的27777777777编译器是以一个4字节,即32位来表示标准整型数的
若是早期的turbo c中以2个字节存储一个标准整型数
-1应该是以1111 1111 1111 1111来存储的,你焕化成八进制就是
377777
而你所说的27777777777编译器是以一个4字节,即32位来表示标准整型数的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在计算机中,有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,整型数值一律用补码来存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
原码:首位为符号位,其余位是数值的二进制形式,
如:10(D)=0 0001010(B) -10(D)=1 0001010(B)
反码:正数的反码与原码相同,负数的反码为:原码的符号位不变,其余位按位取反,即:1变0,0变1,
如:1 0001010(-10原)的反码为1 1110101
补码:正数的补码与原码相同,负数的补码为反码加1,
如:1 0001010(-10原)的补码为1 1110101(-10反)+1=1 1110110
在计算机中,一个int类型整数占四个字节,32位。所以,
-1的原码为:1 0000000 00000000 00000000 00000001
其反码为:1 1111111 11111111 11111111 11111110
其补码为:1 1111111 11111111 11111111 11111111
转换成8进制数时,从右向左,每三位一组(符号位也看作一个数),显示为8进制数,即为:
11 111 111 111 111 111 111 111 111 111 111=37777777777
在计算机系统中,整型数值一律用补码来存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
原码:首位为符号位,其余位是数值的二进制形式,
如:10(D)=0 0001010(B) -10(D)=1 0001010(B)
反码:正数的反码与原码相同,负数的反码为:原码的符号位不变,其余位按位取反,即:1变0,0变1,
如:1 0001010(-10原)的反码为1 1110101
补码:正数的补码与原码相同,负数的补码为反码加1,
如:1 0001010(-10原)的补码为1 1110101(-10反)+1=1 1110110
在计算机中,一个int类型整数占四个字节,32位。所以,
-1的原码为:1 0000000 00000000 00000000 00000001
其反码为:1 1111111 11111111 11111111 11111110
其补码为:1 1111111 11111111 11111111 11111111
转换成8进制数时,从右向左,每三位一组(符号位也看作一个数),显示为8进制数,即为:
11 111 111 111 111 111 111 111 111 111 111=37777777777
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询