秋天的菊花作文:一个编程初学者的疑惑
来源:百度文库 编辑:中科新闻网 时间:2024/04/29 01:41:38
楼主的系统中整数是用16位二进制数表示的,-1表示为1111111111111111。
二进制转化为八进制时,从右往左,每3位转成一个八进制数,即
(二进制)1 111 111 111 111 111
(八进制)1 7 7 7 7 7
二进制转化为十六进制时,从右往左,每4位转成一个十六进制数,即
(二进制)1111 1111 1111 1111
(十六进制) F F F F
以上解释都是假设楼主知道什么是二、八、十六进制数,如果不知道,解释起来好麻烦,我就偷懒不解释了。
因为-1在内存里表示为(11111111)
对于带符号位的十进制表示法来讲这个值就是-1;
对于八进制(不带符号位)表示法来讲这个值就是177777;
对于十六进制(不带符号位)表示法来讲这个值就是ffff ;
负数在计算机中表示为 其绝对值的 补数,
即 -x= ~x+1 =x的逐位求反+1
-1= ~1+1=1111 1111 1111 1110 +1=1111 1111 1111 1111
=(八进制)1 7 7 7 7 7
=(十六进制) F F F F
%d是10进制整数,%o是8进制,%x是十六进制。
8进制和16进制都是无符号整数,输出不带符号。
-1用10进制整数格式输出结果为-1;
当-1用8进制和16进制都是无符号整数输出时,无符号整数范围为0-65535,即0到[2^16-1],-1超出范围,所以值转化为8进制和16进制都是无符号整数就为177777和ffff
前面两位不是已经说得很清楚了吗?
就是十进制的-1在进行进制转化时输出的用不同进制表示的值啊!
关于177777与ffff具体是怎么得到的,请问一下?
谢了,顶!!!!!!!!!!