首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么整数的地址指针有8个符号,整数二进制地址位置有8位?

为什么整数的地址指针有8个符号,整数二进制地址位置有8位?
EN

Stack Overflow用户
提问于 2014-05-05 19:20:22
回答 1查看 529关注 0票数 1

我编写了一个代码(如下所示),它将整数0存储到任意内存位置,然后打印指向此内存位置的指针和该内存位置的二进制地址。

二进制内存地址以8位长,这是我没想到的。我有4Gb的ram,所以如果整数存储在这个ram中,那么您将需要更多的8位来唯一地寻址这个ram中的一个单元格(字节)?更令人困惑的是,指针有8个符号长。如果二进制地址是8位长,那么你只需要2个符号就可以指向这个地址?

那么,为什么地址指针有8个符号,整数二进制地址位置有8位呢?

我已经从这个byte_to_binary中提取了SE Question函数。我仍然是一个初学者,所以我的代码可能不正确。

代码语言:javascript
复制
#include "stdafx.h"
#include <stdio.h>
#include <string.h>     /* strcat */
#include <stdlib.h>     /* strtol */


const char *byte_to_binary(int x)  //code taken from-https://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format
{
    static char b[9];
    b[0] = '\0';

    int z;
    for (z = 128; z > 0; z >>= 1)
    {
        strcat(b, ((x & z) == z) ? "1" : "0");
    }

    return b;
}

int main(void) //my code starts here
{
    int A = 0;
    int *Ap = &A;
    unsigned int number = (unsigned int)Ap;

    printf("%s \t %d \n \n","int Value",A); //prints the value stored in Ap as an integer

    printf("%s \t %s \n \n","bin Value",byte_to_binary(A)); //prints the value stored in Ap as a binary number 

    printf("%s \t %p \n \n","adress Pointer",Ap); //prints pointer address as pointer type

    printf("%s \t \t %s \n \n","adress",byte_to_binary(number)); //prints pointer address in binary


    return 0;
}

这一产出如下:

代码语言:javascript
复制
int Value        0

bin Value        00000000

adress Pointer   003FFE1C

adress           00011100

Press any key to continue . . .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 19:33:39

是您的二进制转换函数不能正常工作。

代码语言:javascript
复制
 0x003FFE1C 

是00000000111111111111111000011100

你对这些东西做得还不够。

你可能会想做一个

代码语言:javascript
复制
 sizeof (Ap) 

看看你需要多少比特。(此处32)

您应该更改您的循环索引,以便它是位位置而不是移位值,否则您将面临溢出的风险。

代码语言:javascript
复制
for (int ii = 31 ; ii >= 0 ; -- ii)
{

   if (x & (1 << ii) != 0)
      strcat (b, "1) ;
   else
      strcat (b, "0") ;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23480111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档