打印一字节的有符号数-128,该怎么处理
打印一字节的有符号数-128
unsigned char c=0x80;
一字节符号数范围:-128----127
0x80 是-128 补码,也是128的补码(正数,补码和原码一致)
我想打印c,让其显示-128,不知道怎么做???
问题2:
4条汇编指令:
mov ax, 7ff0h;
add al,10h; ax=7f00h
add ah,1; ax=8000h
add ax,2; ax=8002h
add ax,2; ax=8002h
第三句执行后,of=?
ah由7f变成80 ,80可能是符号数,也可能是无符号数字, 但是对于of这个标志来讲,符号数会优先处理,所以把of置为1
最后这一句的 of=?
of=0;
注意:of之所以为0的原因, 是因为计算机认为8000h 是一个补码,如果是符号数,那么8000h则是负数,原码的值为 -32768
如果是无符号数字,是一个很大的正数.
无论是有符号数,还是无符号数字, 加上2后,都不会溢出,所以of是0
不知道我对这几条汇编理解的对不对? 不对,请指出,谢谢
------解决方案--------------------
unsigned char c=0x80;
一字节符号数范围:-128----127
0x80 是-128 补码,也是128的补码(正数,补码和原码一致)
我想打印c,让其显示-128,不知道怎么做???
问题2:
4条汇编指令:
mov ax, 7ff0h;
add al,10h; ax=7f00h
add ah,1; ax=8000h
add ax,2; ax=8002h
add ax,2; ax=8002h
第三句执行后,of=?
ah由7f变成80 ,80可能是符号数,也可能是无符号数字, 但是对于of这个标志来讲,符号数会优先处理,所以把of置为1
最后这一句的 of=?
of=0;
注意:of之所以为0的原因, 是因为计算机认为8000h 是一个补码,如果是符号数,那么8000h则是负数,原码的值为 -32768
如果是无符号数字,是一个很大的正数.
无论是有符号数,还是无符号数字, 加上2后,都不会溢出,所以of是0
不知道我对这几条汇编理解的对不对? 不对,请指出,谢谢
------解决方案--------------------
- C/C++ code
unsigned char c=0x80; strtoul((const char*)&c,0,2); printf("%d",-c);