C语言 二进制左右移运算小程序
2017-11-28 14:40
162 查看
#include <stdlib.h> ////调用itoa(); #include <stdio.h> int convert1(int , int ); int convert2(int , int ); int main() { int i; int z; int m; int x; char L; char R; char s[128]; printf("请输入需操作的十进制\n"); scanf("%d",&i); printf("请输入需要移动的位数\n"); scanf("%d", &m); getchar(); while(i != 0) { printf("请选择左移(输入L)或右移(输入R)\n"); switch(getchar()) { case 'L': z = convert1( i, m); itoa(z, s, 2); printf("该数左移后为二进制是: [%s]\n",s); break; case 'R': x = convert2(i, m); itoa(x, s, 2); printf("该数右移后为二进制是: [%s]\n",s); break; default: printf("unvalid command"); break; } printf("请继续输入:\n"); printf("请输入需操作的十进制\n"); scanf("%d",&i); printf("请输入需要移动的位数\n"); scanf("%d", &m); getchar(); } } int convert1(int a, int n) { return( a<<n); } int convert2(int a, int n) { return( a>>n); }
/* 打印结果
请输入需操作的十进制
40
请输入需要移动的位数
3
请选择左移(输入L)或右移(输入R)
L
该数左移后为二进制是: [101000000]
请继续输入:
请输入需操作的十进制
40
请输入需要移动的位数
1
请选择左移(输入L)或右移(输入R)
R
该数右移后为二进制是: [10100]
请继续输入:
请输入需操作的十进制
*/
总结(来自网络):
计算机的算术左移和逻辑左移相同,这个是正确的.
只有算术右移和逻辑右移是不同.
算术左移好像会把负的数变成正的,这句话不正确
如果把0000 1000左移四位,那最高位是不是变成1了,不就变成负的了?
这句话说对也对,说不对也没错 对的情况下是,如果计算机的字长刚好是8位的话,那么0000 1000 左移4位后 就变成了1000 0000 就变成了负数 错的情况下是,如果计算机的字长超过8位,那么0000 1000 左移4位后, 变成了0000 1000 0000 ,数值增大了16倍. 并没有变成负数
相关文章推荐
- C语言逻辑运算小程序
- C语言的二进制 十进制 ^&|~ >> <<运算
- 《C语言及程序设计》程序阅读——位运算及其应用
- 二进制的原码、反码、补码和程序超出整型限制时的运算
- C语言整数十进制按照二进制形式输出程序
- 一个简单的四则运算程序C语言实现--实现处理括号
- 用移位运算实现一个整数二进制形式的输出--简短程序分析
- 利用C语言写一个可以进行乘方运算的程序
- C语言 程序 简单二进制题目
- 一个简单的四则运算程序C语言实现--无法处理括号
- C语言巧妙运用位运算十进制转化为二进制输出
- C语言小试牛刀两个初级程序练习------1到100的加法运算,两个数大小的比较
- C语言二进制文件读写程序实现(基础)
- C语言:一个能自动生成小学四则运算题目的程序
- 要复制就能用的 谢谢有急用 要求200行左右 有代码 在c语言的环境下编一个运动的图形程序
- C语言编写程序,实现多个非负整数四则运算的功能
- 用C语言编写生成小学四则运算程序
- Mohican_4/1 C语言 移位运算基本操作 计算二进制的个数
- 监控进程(二进制程序)运行状态的C语言实现与脚本实现
- C语言二进制除法用左右移位来表示