标题:位运算问题
只看楼主
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
已结贴  问题点数:20 回复次数:5 
位运算问题
键值为157653(8) ,循环位移3
    b = a << (16 - n);
    c = a >> n;

为啥b的值始终不正确,非八进制数3, 而c的值是正确的, 八进制15765

运行结果:
Plese number and cyclic shift length!
157653 3
3375260000 15765
Process returned 16 (0x10)   execution time : 3.520 s
Press any key to continue.


程序代码:
#include<stdio.h>

int main (int argc, char** argv)
{
    int n;
    unsigned a, b, c;
    printf("Plese number and cyclic shift length!\n");
    scanf("%o%d", &a, &n);
    b = a << (16 - n);
    c = a >> n;
    //c = c | b;
    printf("%o %o", b, c);
    return 0;
}
搜索更多相关主题的帖子: execution continue number 八进制 color 
2017-04-26 20:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
OCT 157653 = BIN 1101111110101011
左移13(16-3)BIN 0110000000000000 = OCT 60000
2017-04-26 20:41
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 2楼 吹水佬
大佬, bin 和 otc 是自己定义的还是有啥含义。你帮我看看反正b移位的结果就是有问题不知道是什么原因
#include<stdio.h>

int main (int argc, char** argv)
{
    int n;
    unsigned a, b, c;
    printf("Plese number and cyclic shift length!\n");
    scanf("%o%d", &a, &n);
    b = a << (16 - n);
    c = a >> n;
    c = c | b;
    printf("%o", b);

}
运行结果:
Plese number and cyclic shift length!
157653
3
3375260000

[此贴子已经被作者于2017-4-26 21:04编辑过]

2017-04-26 21:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 3楼 Emotiona
看似是处理16位数据?是的话用unsigned short类型试试。
2017-04-26 21:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
OTC157653 << DEC13 = OTC3375260000 这是32位运算结果
2017-04-26 21:33
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 5楼 吹水佬
确实是32位运算改成短整型可行。
2017-04-26 22:09



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




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

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