标题:用移位符》》和《《解决问题 ?
只看楼主
爱的轩辕氏
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:157
注 册:2011-5-8
结帖率:93.75%
已结贴  问题点数:13 回复次数:6 
用移位符》》和《《解决问题 ?
输入一个4字节的变量,拆成4个1字节的变量输出
示例
Please Enter 4-byte Value:
0x[提示符]12345678
Result Is:
0x12
0x34
0x56
0x78
使用移位符>>和<<完成这个题目


注意用移位符
搜索更多相关主题的帖子: 解决问题 
2011-05-18 12:50
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:3 
程序代码:
root@~ #cat y.c
#include <stdio.h>

int main (void) {

        int a,i=24;
        printf("Enter hex:0x");
        scanf("%x",&a);

        do {
                printf("0x%x\n",(a>>i&0xff));
                i-=8;
        }while(i>=0);

        return 0;

}

root@~ #
root@~ #./y
Enter hex:0x12345678
0x12
0x34
0x56
0x78
root@~ #./y
Enter hex:0x99991234
0x99
0x99
0x12
0x34
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-18 13:09
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int digit = 32;
    unsigned int n, index = 0;
    unsigned int result[4];
    printf("Please enter 4-byte value:\n0x");
    if(scanf("%x", &n))
        while(digit > -1)
            result[digit -= 8, index++] = n >> digit & 0x000000ff;
    else
        exit(1);
    printf("Result is:\n");
    for(index = 0; index < 4; index++)
        printf("%#x\n", result[index]);
    return 0;
}


My life is brilliant
2011-05-18 15:58
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:3 
请教一下,为什么i>>24是0x12,i>>24<<24是0x12000000,而两个相减就是0?为什么?
int i=0x12345678;
printf("%#x\n",i>>24);
printf("%#x\n",i>>24<<24);
printf("%#x\n",i-i>>24<<24);
2011-05-18 16:31
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:0 
回复4L
1、移位运算符不改变变量的值。
2、printf("%#x\n", i-i>>24<<24);    // '-'的优先级更高。0 >> 24 << 24当然为0

My life is brilliant
2011-05-18 16:49
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:3 
不错 都不错

                                         
===========深入<----------------->浅出============
2011-05-18 18:55
爱的轩辕氏
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:157
注 册:2011-5-8
得分:0 
回复 2楼 ansic
   printf("0x%x\n",(a>>i&0xff));
                i-=8;
  什么意思啊?》
2011-05-19 13:16



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




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

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