发布网友
共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