| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5553 人关注过本帖, 1 人收藏
标题:【新手求助】输入一个(unsigned类型)无符号整数,分别输出它的低4位和高4 ...
只看楼主 加入收藏
lol
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-1-23
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:6 
【新手求助】输入一个(unsigned类型)无符号整数,分别输出它的低4位和高4位。
完整题目如下:
输入一个(unsigned类型)无符号整数,分别输出它的低4位和高4位。
起步菜鸟望不吝赐教。拜谢拜谢~
ps:另求一个C语言学习群。

[ 本帖最后由 lol 于 2010-1-24 13:14 编辑 ]
搜索更多相关主题的帖子: 类型 符号 unsigned 整数 
2010-01-24 12:41
骓鲟
Rank: 2
等 级:论坛游民
帖 子:31
专家分:19
注 册:2009-6-17
收藏
得分:2 
核心代码: inta[3], b[3];
           scanf(%d,&a);
           for(i=0;i<4;i++)
               {a[i]=a%2;
                    a=a/2;}/*高四位*/
           for(i=0;i<4;i++)
               {b[i]=a%2;
                 a=a/2;}/*低四位*/
        
2010-01-24 13:50
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
用移位运算就很方便了!
#include <iostream>
void main()
{
    unsigned int y;
    y=32767;  //其实这个数只要保证右边4位全1,结果就是15,
    y<<=sizeof(int)*8-4;
    y>>=sizeof(int)*8-4;
    printf("右4位: %d\n",y);//  结果为15
    y=-32768;//这个数只要是负数,那么结果应该>=8
    y>>=sizeof(int)*8-4;
    printf("左4位: %d\n",y); // 结果为15
    getchar();
}

[ 本帖最后由 cnfarer 于 2010-1-24 15:00 编辑 ]

★★★★★为人民服务★★★★★
2010-01-24 13:55
lol
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-1-23
收藏
得分:0 
没看懂。这题是一本C语言书第一章后的习题。这两天看完了循环结构和数组,1楼的还是没看明白。
2楼的就完全看不懂了,看注释怎么结果都是15,汗个!
是不是我对高四位和低四位理解有问题。123456789的高四位和低四位不是1234和6789吗?
2010-01-26 11:56
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
看来,你对自己的问题并不是很清楚!给你介绍一点:
1.所谓的位是指二进制位,一个整数在计算机中是用二进制表示的(最高位表示符号,0为正整数,1为负整数)
    如65,用8位二进制表示就是01000001,那么高4位便是0100(即10进制的4),而低4位就是0001(即10进制的1)
    整数在计算中表示的时候,正数用原码,负数用补码表示.(这些东西就要看书学习了)
2.在C语言中一个int变量可以用sinzeof(int)计算其占用的字节数(一般可能是2,在不同情况下可能是不同的),将其乘以8就是其二进制数占用的位数.
3.C中的移位运算就是将二制位向左或向右移动,移位时超出位数的部分,将丢掉,而不足的部分将补0
    如上面的65,其二进制左移4位便是00010000(如果再对它右移4位就变成了00000001),而右移4位便是00000100,现在你看这两个数如果去掉左边4个0(对于一个整数来说,左边的0不会影响它的大小),不就分别是低4位和高4位的值了.

上面程序中">>(右移)""<<(左移)"就是移位操作符.
y<<=sizeof(int)*8-4; //就是将y的值左移(其所占用二进制位数-4)位,结果还存于y中,余类推

不知你能否理解?

你好好看书吧,祝学习愉快!

[ 本帖最后由 cnfarer 于 2010-1-26 14:53 编辑 ]

★★★★★为人民服务★★★★★
2010-01-26 14:17
lol
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-1-23
收藏
得分:0 
看基础知识的时候还以为了解下就可以呢。多谢cnfarer、骓鲟。
尤其是cnfarer这么细致讲解。

2010-01-27 20:17
YYCLXS
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-4-1
收藏
得分:0 
帮帮忙不会做

题目,编程解决问题。用户输入一个不超过4位的整数,不考虑该整数的符号,程序输出它是几位数,分别输出其每位数字,最后将该数逆序输出。
提示:(1)通过判断整数数值大小确定它是几位数;
(2)分别输出几位数即是将整数的每一位数字单独输出,如:输入整数358,输出时需分别输出3、5、8。这可以通过求余运算符%来实现:358/100即为3,358%100/10即为5,358%10即为8,这个算法对所有三位整数都适用。请自行推导一、二、四位整数的算法(可以将个、十、百、千位数字分别保存至整型变量b1、b2、b3、b4里面)。
(3)(通过2)步骤得到了拆分开的每位数字,这步反向输出数字很容易实现。
2019-04-01 23:00
快速回复:【新手求助】输入一个(unsigned类型)无符号整数,分别输出它的低4位 ...
数据加载中...
 
   



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

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