“用八进制常量的形式写出signed int型常量(16位)的可表示数值范围为”答案是010000-077777,怎么得到的

问题描述:

“用八进制常量的形式写出signed int型常量(16位)的可表示数值范围为”答案是010000-077777,怎么得到的
还有,书上说八进制数以无符号数处理是什么意思,是八进制数不能表示负数吗?

拿077777举例,16位有符号整数所能表示的最大数的二进制表示是01111111111111111,即最高位0表示正数,将其表示成八进制形式,从右向左,每三位一组转换成八进制,记住,即使是最高位用来表示符号的一位,也在转换范围之内,也就是说,转换成八进制的时候是把所有位数都用来转换,而不考虑是否是符号位,这样就成了0 111 111 111 111 111 ,也即八进制的077777.
下一个问题:
书上说的八进制数以无符号数处理的意思是当前的有符号整形数,在内存是以二进制补码形式存放,当要转换成八进制的时候,是不用考虑当前数是负数还是正数,只简单的将当前你看到的所有二进制位数转换成八进制.但这并不表示八进制数不能表示负数,例如-021,这就是负的八进制数.相当于-17