标题:
c语言基础 编程
[打印本页]
作者:
xuelanga000
时间:
2016-7-1 08:57
标题:
c语言基础 编程
本帖最后由 xuelanga000 于 2016-7-1 09:02 编辑
各位大神,大家好!
小弟在编写程序时,发现 负数在计算机中是以补码的形式存储的,最高位是符号位
于是小弟采用-25实验了一下,其中-25的原码二进制是1000 0000 0000 0000 0000 0000 0001 1001
-25的补码是1111 1111 1111 1111 1111 1111 1110 0111
int main( )
{
int a=0,b=0;
b=0xffffffffe7;//-25的补码
a=0x8000019;//-25的原码
printf("a=%d\n",a);
printf("b=%d\n",b);
getch();
return 0;
}
为什么a=134217753而不是25;为什么b=-25,请各位大神帮我解答一下
更多
0
作者:
1058098234
时间:
2016-7-2 13:40
不懂哦
作者:
1454856609
时间:
2016-7-2 16:30
不懂啊
作者:
yzwzfyz
时间:
2016-7-2 20:22
你考虑一下,如果就是134217753,将是如果存储呢?
作者:
yzwzfyz
时间:
2016-7-2 20:29
提示一下:用一个字节表示数:
1、00000000B-11111111B=0-255
2、00000000B-11111111B=0至127;-128至-1。
作者:
yzwzfyz
时间:
2016-7-2 20:30
你需要告诉编译器,首位是不是作为符号用!
作者:
yzwzfyz
时间:
2016-7-2 20:35
例如单字节:
1、00000000B-11111111B=0至256
2、00000000B-11111111B=0至127;-128至-1。
作者:
xuelanga000
时间:
2016-7-3 10:50
亲们,怎样告诉编译器首位不是符号位
作者:
zl2168
时间:
2016-7-3 12:02
在51单片机中采用int和long数据类型(除非必要)都是半外行教材和半外行老师惹的祸。
作者:
SHE音
时间:
2016-7-4 19:17
00000000B-11111111B=0至256
作者:
你不是我qq
时间:
2016-7-5 19:27
不对啊,数据就错了,-25的原码是最高位不应该是1啊,而应该是0.
作者:
haizimajia
时间:
2016-7-6 21:38
不懂啊
作者:
隨颩洏過
时间:
2016-7-6 23:02
你是用的单片机?机器不是这么算的吧!
作者:
songdaxuan
时间:
2016-7-14 22:07
0x前缀表示的是十六进制
你要表示二进制后缀用B
作者:
海葵鱼
时间:
2016-7-15 15:48
不懂啊
作者:
bbright3493
时间:
2016-7-17 15:18
数据在内存里面都是以补码的形式存储的 补码的话要考虑符号位
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1