A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include<stdio.h>

int main()
{
    int a = 128;
    printf("%p %p\n", &a,);

    char * xx = (char*)&a;
    printf("%p\n", xx);

    printf("0 -> %p --> %d\n", xx, *xx);
    printf("0 -> %p --> %d\n", xx+1, *(xx+1));
    printf("0 -> %p --> %d\n", xx+2, *(xx+2));
    printf("0 -> %p --> %d\n", xx+3, *(xx+3));
}

为什么内存最低位输出的是      -128。

9 个回复

倒序浏览
不是太懂
回复 使用道具 举报
如题在内存当中只有一个字节,存贮的是10000000,那么他到底表示多少呢,如果表示-128,那么正的128又怎么表示
回复 使用道具 举报
这个是指针么                    !
回复 使用道具 举报
是的!想验证一下内存中存的东西
回复 使用道具 举报
一个字节存储的范围就是-128~+127,要表示+128就需要两个字节,为什么是-128,这是一个规定,详细的可以看C语言入门视频中,原码,反码,补码部分的视频!
希望会对你有帮助。
回复 使用道具 举报
有符号数用补码表示,一个字节不能表示+128,最大为+127,取值范围为-128至正+127
0:0000 0000
正数补码为自己:首位为0,后七位二进制数即为所表示正数的绝对值
负数补码:首位为1,将所有位取反,再加1,即为负数的绝对值
1000 0000按照上边的说法应该为负数(首位为1),取反加1结果还是1000 0000,大小为128
所以1000 0000也就表示了-128
回复 使用道具 举报
堕落天使 发表于 2016-3-27 08:20
一个字节存储的范围就是-128~+127,要表示+128就需要两个字节,为什么是-128,这是一个规定,详细的可以看C ...

已经看过了,但是里面没有讲到,这种极限,或者是边界的问题,所以脑袋大,想不清楚
回复 使用道具 举报
muzipiao 发表于 2016-3-27 10:24
有符号数用补码表示,一个字节不能表示+128,最大为+127,取值范围为-128至正+127
0:0000 0000
正数补码为 ...

-128没有原码,只有补码的。
回复 使用道具 举报
MuziTian 发表于 2016-3-27 15:52
已经看过了,但是里面没有讲到,这种极限,或者是边界的问题,所以脑袋大,想不清楚 ...

不对吧,视频里有讲过的啊,0和-0的问题,就是这里牵扯到-128的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马