关于C的数据转换问题

2024-12-22 18:18:54
推荐回答(4个)
回答1:

1111111111111111

每四个分隔,得到16进制
1111 1111 1111 1111 -->ffff

每三个分隔,得到8进制
1 111 111 111 111 111 -->177777

无符号(原码表示)
1111111111111111 -->65535

有符号(补码表示)
1111111111111111(补码) -取反(不包括符号位)->1000000000000000-加1-1000000000000001(原码) --> -1

------------------------------------------------------------------------------------------------------------------------------
1111111111111110

每四个分隔,得到16进制
1111 1111 1111 1110 -->fffe

每三个分隔,得到8进制
1 111 111 111 111 110 -->177776

无符号(原码表示)
1111111111111110 -->65534

有符号(补码表示)
1111111111111110(补码) -取反(不包括符号位)->1000000000000001-加1-1000000000000010(原码) --> -2

回答2:

无符号转整型:原无符号数最大范围可以到65535,换成二进制也就是全1,这样在有符号的整型数里第一位就是符号位,后面的1全部取反再加1,这是补码规则,这里你可以参看一下各种码制的转换,这样,就是-1了,
%o这个不用怎么解释,只是换成了八进制输出,类型并没有变。
%x这个也一样,是换成了十六进制。
有符号换成无符号:把上面那个反过来想想就OK了。

回答3:

%格式控制字符
d 十进制节
o 八进制
x 十六进制
u 无符号短整形

回答4:

%d 十进制节
%o 八进制
%x 十六进制
%u 无符号短整形