...0xfff1和-0x800f等价 都等于10进制的-15什么意思?

发布网友

我来回答

5个回答

热心网友

整形数据在内存里以二进制存放,负数便以补码的方式存放。
取负数的补码方法:先取绝对值,取反,再加1。
以-15举例(两字节):
-15原码: 1000000000001111 0x800f
15的原码: 0000000000001111 0x000f
取反: 1111111111110000 0xfff0
加1得-15的补码:1111111111110001 0xfff1
有符号整形数据二进制里首字符为1的为负数。0x代表16进制,不一定代表补码。
有符号整形数据十六进制0x8的是补码。

热心网友

输入0x表示十六进制,但不是补码

热心网友

没对
0x800f 是signed -32753
unsigned 32783

热心网友

我也是,编程寻找2^32+1的约数:
#include "stdio.h"
void main()
{
unsigned long i=0x100000001;
unsigned int j=2;
printf("%u",i);
for(;j<=0x100001;j++)
if ((i%j)==0) {printf("%u",j); break;}
}
结果为:1

热心网友

你应该多看书,真的,这个都好基础的

热心网友

整形数据在内存里以二进制存放,负数便以补码的方式存放。
取负数的补码方法:先取绝对值,取反,再加1。
以-15举例(两字节):
-15原码: 1000000000001111 0x800f
15的原码: 0000000000001111 0x000f
取反: 1111111111110000 0xfff0
加1得-15的补码:1111111111110001 0xfff1
有符号整形数据二进制里首字符为1的为负数。0x代表16进制,不一定代表补码。
有符号整形数据十六进制0x8的是补码。

热心网友

输入0x表示十六进制,但不是补码

热心网友

没对
0x800f 是signed -32753
unsigned 32783

热心网友

你应该多看书,真的,这个都好基础的

热心网友

我也是,编程寻找2^32+1的约数:
#include "stdio.h"
void main()
{
unsigned long i=0x100000001;
unsigned int j=2;
printf("%u",i);
for(;j<=0x100001;j++)
if ((i%j)==0) {printf("%u",j); break;}
}
结果为:1

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com