社区
C语言
帖子详情
C语言移位问题
xxb249
2012-10-12 11:11:42
#include <stdio.h>
int main()
{
int aa = 10;
int bb = aa >> 32;
printf("aa = %d,bb = %d\n",aa,bb);
return 0;
}
输出结果:aa = 10,
b = 10
aa 的二进制 0000 0000 0000 0000 0000 0000 0000
1
0
1
0
aa右移32位,那么应该是全0啊 bb应该输出
0
为什么是
10
呢
...全文
185
8
打赏
收藏
C语言移位问题
#include int main() { int aa = 10; int bb = aa >> 32; printf("aa = %d,bb = %d\n",aa,bb); return 0; } 输出结果:aa = 10,b = 10 aa 的二进制 0000 0000 0000 0000 0000 0000 0000 1010 aa右移32位,那么应该是全0啊 bb应该输出0 为什么是10呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夏天__
2012-10-12
打赏
举报
回复
要移动32位以上的,使用数组移位;
开辟一段连续的整形空间,如int a[10];
全部初始化为0;
把段连续的空间当成是一个数,即:
将最后一个数(a[9])当最低位,
将最前一个数(a[0])当最高位,
每次左移时将整个数组里的每一个数全部左移相同的位数
只是这个数我们无法像读一个整数一样读出来,
但我们可以从a[0]开始一个一个的在屏幕上显示出来,
在屏幕上能当成一个数来读
lin5161678
2012-10-12
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
使用gcc编译出现错误:
[root@bogon temp]# gcc -g -o t1 t1.c
t1.c: In function ‘main’:
t1.c:21: warning: right shift count >= width of type
[/Quote]
警告就警告 不是错误
那是ERROR
lin5161678
2012-10-12
打赏
举报
回复
依稀记得 左移右移太多结果是未定义的
lin5161678
2012-10-12
打赏
举报
回复
int的大小和编译器有关 和操作系统无关
夏天__
2012-10-12
打赏
举报
回复
使用gcc编译出现错误:
[root@bogon temp]# gcc -g -o t1 t1.c
t1.c: In function ‘main’:
t1.c:21: warning: right shift count >= width of type
右移数据大于等于类型长度。
不要出现无法预测结果的表达式。
cyshuxin
2012-10-12
打赏
举报
回复
http://topic.csdn.net/t/20041016/03/3461265.html
xxb249
2012-10-12
打赏
举报
回复
还有一个问题为什么,64位机下 sizeof(int) =
4而不是8
呢
xxb249
2012-10-12
打赏
举报
回复
自己顶下,貌似编译器,认为你这样做,无意义。移动32位,相当于把变量置0,
所以编译器没有进行移位
C语言
移位
实现加减乘除
本文主要讲了
移位
实现加减乘除,希望对你的虚席有所帮助。
C语言
的
移位
操作
关于
C语言
位操作,左移时总是
移位
和补零。右移时无符号数是
移位
和补零,此时称为逻辑右移;而有符号数大多数情况下是
移位
和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。
C语言
--视频精讲
C语言
作为被长期使用的编程语言,可以被运用到各种操作系统,游戏,开发中。本课程作为互联网上首家使用C99录制的
C语言
教程,展现了全面、专业。标准的
C语言
教程。可以帮助学员从基础开始一点点的深刻理解
C语言
。
C语言
中的
移位
操作技巧
C语言
中的
移位
操作技巧
移位
加密算法
C语言
源代码
移位
加密的
C语言
实现,比较完备的,可以参考参考
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章