c语言中原来负数我输出时用想输出为16进制

2020-12-26 14:20:03 字数 3696 阅读 2669

1楼:匿名用户

看输出的无符号整数最高位是否为1,如果是1则是负数

2楼:匿名用户

%x 并不是只是输出正数的

3楼:匿名用户

前面加个负号好了,一%x。

c语言,为什么%o和%x输出的都是无符号数,为什呢不能有负数

4楼:匿名用户

不是说不能有负数,如果使用%x和%o输出时,应该先把你的数据转为二进制的形式,然后再转为8进制或者是16进制,这样转出来的数是不会带+-号的,而是根据实际在内存中存放的数据来显示

c语言中输出16进制数为什么只是用无符号形式呢?

5楼:abc小鸭

不是只用无符号形式的。

c中以8和16进制输出的整数,都是将内存中的各位的值全部按8/16进制输出,包括符号位。

可以试验一下,1和-1的16进制输出结果是不一样。

6楼:匿名用户

楼主说的不错,本来也没注意这个,谢谢提醒了,我看了下书:c中以8和16进制输出的整数,都是将内存中的各位的值全部按8/16进制输出,包括符号位,所以上面那兄弟说的6和-6确实不一样,不信写个程序试验下吧

7楼:匿名用户

谁告诉你只能是无符号的啊?

你用i=16和i=-16输出结果会是一样的嘛?

c语言中以16进制输出时%0x和%x有什么区别?

8楼:

%0x和%x都是以十六进制格式右对齐输出,输出的是无符号数。

在不指定占宽情况下以数据的实际宽度输出,而系统又自动消除左端的无效0,所以%0x和%x在显示效果上没有什么不同。

在指定占宽的情况下,在指定的输出占宽范围内,实际数据宽度不足时用%0x作控制的前面用0补齐,而用%x作控制的前面用空格补齐。如:

//#include"stdafx.h"//ifthevc++6.0,withthisline.

#include"stdio.h"

intmain(void)

输出是:

0037

37若实际数据宽度大于指定宽度,则按实际宽度输出。

9楼:匿名用户

标准c语言库函数fprintf/printf格式字符串的转换说明形式是这样的:

%[标志][最小输出宽度][.精度][长度修正符]类型方括号括起来是可选项。

标志是0或多个标志字符,可以是任意顺序,常用有以下几个:

- 左对齐,缺省是右对齐。

+ 带符号的值前面总是有个符号,也就是正数前面有+号,负数前面有-号。

0 输出值的宽度小于最小宽度的话,用0填充,缺省是用空格填充。

0是一个标志字符,意思就是用0填充

10楼:匿名用户

char x=5;

printf("%x\n",x);得到输出5

printf("%0x\n",x);得到输出05

11楼:巨大

你编程试试不就知道了吗。

c语言两个16进制负数a,b,相加为何输出是 printf(“-%x",-(a+b))

12楼:匿名用户

%d整型

输出%ld长整型输出

%o以八进制专数形式输出整属数

%x以十六进制数形式输出整数

%c用来输出一个字符

另外,%x没有符号位,就是说不能表示负数,因此两个负数相加时,需要先将结果变为正数,并在输出时在前面填一个负号,所以是 -%x"

欢迎追问!

c语言中以%x开头的为十六进制整数对吗,怎么理解

13楼:金色潜鸟

以 0x 或 0x 开头的数 为十六进制整数.

例如:int red= 0xff, green=0x80, blue=0xaa;

0xff, 0x80, 0xaa 都是 十六进制整数。

%x -- 是 输出/输入语句里的格式定义。

例如:int y;

scanf("%x",&y); // 以16进制形式输入 整型printf("%x %d",y,y); // %x -- 以16进制形式输出y, %d -- 再以10进制形式输出y。

输入 若键盘 拍入 0x123 或 123 都可以,都表示 是 16进制。

输出:123 291

14楼:匿名用户

%x是在printf或scanf(或是其衍生的fprintf或fscanf)用来做格式控制符的,表示以16进制无符号数的形式显示对应的表列里的整数

15楼:匿名用户

以0x或0x开头的数是16进制数,以0(数值0)开头的是8进制数。

%x是指在输入/输出数据时的格式,比如scanf("%x",&a);,以16进制格式读入数据(这里不需要0x或0x开头)。printf("%0x",a);,把整数a转换为16进制格式显示在屏幕上。

16楼:小马

对!确定

x 表示参数类型为int,输出格式为十六进制整数(不带前缀0x或0x)

printf("%x",n);

c语言题 第21题求详细解释 我知道%x是变成16进制数 但不知道怎么从-1变成ffff了

17楼:盗墓者

%x 和 %o 都是直接输出内存数据,因为 -1 在内存中就存储为 ffff (65535),所以它就直接输出 ffff。类似地,如果用 %o 的话会输出 177777。

18楼:匿名用户

这是补码。

就是说bai,如果数du字(无符号)最大只能zhi是a,也可以是0,那么

dao-b可以表回示为a-b+1,同时正负答数的绝对值都要小于a/2。

例子:数字最大为65535,那么-1就是65535-1+1=65535。

事实上用c求补码就是这样的

int***plement(inti)有了补码,无符号数的运算就容易解决了。

c语言中输出格式说明的问题,比如%d为十进制,%o为八进制,%x为16进制。 那么请问二进制怎么表示啊

19楼:匿名用户

这些表达式使用了c++的iomanip库了~这是c++

2进制转换没必要,应为计算机里流通的都是二进制,不管什么**要在计算机里运算都是要转化成2进制的,这个不用我们特意去做

20楼:

抓住最根本的:c/c++没有提供二进制形式的数据输入、输出功能!

21楼:匿名用户

用itoa把十进制转成二进制的字符串,输出这个字符串就行了

22楼:匿名用户

没有二进制的输出格式

23楼:匿名用户

c里面没有专一二进制输出形式

c语言中 %o以八进制数形式输出整数 %x以十六进制数形式输出整数 二进制用什么符号输出呢

24楼:

c语言中没有2进制的输出符号,可以自己写相关函数实现输出.

c语言。编写程序。把任意十进制整数转化为二进制数。并输出

1楼 饶磊 include void main while a 0 printf 输出的二进制 while i 0 printf d s i printf n c语言问题求教!!!编写一个程序,将任意一个十进制数转换成二进制数,按为存放在数组中,然后输出 2楼 董俊锟 你这数组只有这么长 可以把n定...

如何用JAVA语言将十六进制数转换成二进制数,并输出

1楼 public static void main string args static string hextobin string s 如何用java语言将十六进制数转换成二进制数,并输出 2楼 匿名用户 public class aa system out println bstr 如何用j...

c语言中输出时怎么将非零数字前的零去掉

1楼 匿名用户 int t 0 i int a for i 0 i 7 i 其实就是用一个变量表示出现的非零数字的个数,不是零就说明出现了非零数字,就可以开始输出了 而且楼上最佳答案的 有一个漏洞,之和为0不代表全都是0,如果数组是3 0, 3, 1 1,那就会输出3, 1。这个显然是不对的。 2楼...