标题:小女子在这问一个关于进制的问题,谢谢大大
只看楼主
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
得分:0 
回复 5楼 afanihao
兄台,你这个整数定义下草率了吧


莫问前尘有愧,但求今生无悔
2015-03-13 23:44
lzlz1111
Rank: 2
等 级:论坛游民
帖 子:19
专家分:54
注 册:2015-3-13
得分:0 
回复 3楼 longwu9t
请教三楼大师一个程序:
#include <iostream>
 
int main()
{
char a[20],*p;
int i=0;

p=a;

while(*p!='\0')
{
    scanf("%c",p++);
}

p=a;

while(*p!='\0')
{
    printf("%c",*p++);
}

return 0;
}
程序功能就是输入一串字符串,然后用指针输出,但输出总是只有一个字母
2015-03-13 23:50
小柴爱爸爸
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-3-12
得分:0 
回复 8楼 afanihao
博客我看了,一开始是10进制,而不是16进制的,你是直接16进制转的,另外,你的学习指南,没有对应章节下面的序号,全是从1开始的。
2015-03-14 10:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
自己琢磨:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
    const int n = 32164143;     // 源數

    printf_s("1.十進制表示: %d\n", n);

    printf_s("2.十六進制表示: %X\n", n);

    printf_s("3.數據在內存中的映像: ");
    unsigned char* p = (unsigned char*)&n;      // 用指針指向變量n的入口地址
    for (int i = 0; i < sizeof(n); ++i)
    {
        printf_s("%02X ", *p++);
    }
    putchar('\n');

    printf_s("4.取出數據的數組: ");
    int arr[sizeof(n)];
    p = (unsigned char*)&n;                     // 復位指針到n的入口處
    for (int i = 0; i < sizeof(n); ++i)
    {
        arr[i] = *p++;
        printf_s("%02X ", arr[i]);
    }

    printf_s("\nPress any key to continue...");
    _getch();
    return EXIT_SUCCESS;
}


運行結果畫面:


看著源代碼,再看輸出,自然明白怎麽回事。

授人以渔,不授人以鱼。
2015-03-14 11:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
再補充一個情形:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
    const int n = 32164143;     // 源數

    printf_s("1.十進制表示: %d\n", n);

    printf_s("2.十六進制表示: %X\n", n);

    printf_s("3.數據在內存中的映像: ");
    unsigned char* p = (unsigned char*)&n;      // 用指針指向變量n的入口地址
    for (int i = 0; i < sizeof(n); ++i)
    {
        printf_s("%02X ", *p++);
    }
    putchar('\n');

    printf_s("4.取出數據的數組: ");
    int arr[sizeof(n)];
    p = (unsigned char*)&n;                     // 復位指針到n的入口處
    for (int i = 0; i < sizeof(n); ++i)
    {
        arr[i] = *p++;
        printf_s("%02X ", arr[i]);
    }
    putchar('\n');

    printf_s("5.把數組反演爲整數: ");
    int x = 0;
    for (int i = 0; i < _countof(arr); ++i)
    {
        x += arr[i] << (i * 8);                     // 警告:這個算法取決於機器!
    }
    printf_s("%d\n", x);

    printf_s("\nPress any key to continue...");
    _getch();
    return EXIT_SUCCESS;
}





[ 本帖最后由 TonyDeng 于 2015-3-14 11:34 编辑 ]

授人以渔,不授人以鱼。
2015-03-14 11:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
注意上面的代碼:除了用於顯示,在真實數據中我沒有進行任何進制的轉換,那根本不需要。

授人以渔,不授人以鱼。
2015-03-14 11:53
afanihao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:62
专家分:99
注 册:2015-3-13
得分:0 
唉,进制对人类而言的,计算机存储的只是一个数值。。。。现在教程真是害死人。。。我不知道我有没有讲明白这个问题
计算机里按字节存储,一个字节的值是10还是0x0A只是对人类而言的,里面存的就是 00001010。。。算了。。。我放弃了

以下是引用小柴爱爸爸在2015-3-14 10:11:18的发言:

博客我看了,一开始是10进制,而不是16进制的,你是直接16进制转的,另外,你的学习指南,没有对应章节下面的序号,全是从1开始的。
2015-03-14 21:39
afanihao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:62
专家分:99
注 册:2015-3-13
得分:0 
好吧,为每一个读者负责,请看这篇附录,专门说进制的概念
http://blog.
2015-03-15 10:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442584-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.219931 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved