位运算有这样一个例题:

编写一个函数,输出16位数据的第4位和第10位。

初期我尝试了使用以下的代码,但是发现并不能够正常运行:

#include <stdio.h>
#include <stdlib.h>int main()
{unsigned int num1,num2;printf("please input a number:\n");scanf("%d",&num1);num2=num1;num1<<=3;num1>>=15;printf("the forth is %d\n",num1);num2<<=9;printf("%d\n",num2);num2>>=15;printf("the tenth is %d\n",num2);
}
----------------运行结果如下
please input a number:
1754   //转换为二进制为0000 0110 1101 1010
the forth is 0
898048   //转换为二进制为1101 1011 0100 0000 (二进制)
the tenth is 27  //此处向右移动15个应该是0000 0000 0000 0001,但是却传出了1011
Program ended with exit code: 0

在不停的调试过程中发现一直无法解决该问题,甚至按照书上一模一样的代码依然存在问题,调试巧合间发现可能是长短整形问题,于是换为以下代码(长换短):

#include <stdio.h>
#include <stdlib.h>int main()
{unsigned short int num1,num2;printf("please input a number:\n");scanf("%hu",&num1);num2=num1;num1<<=3;num1>>=15;printf("the forth is %hu\n",num1);num2<<=9;printf("%hu\n",num2);num2>>=15;printf("the tenth is %hu\n",num2);
}
--------------运行结果如下:
please input a number:
1754
the forth is 0
46080
the tenth is 1
Program ended with exit code: 0

此时便可以成功,于是深入研究发现,这个算法必须用短整型才是16位数,才能使用左移右移的方式删去不需要数字达到程序目的,用标准整型会出现保留情况。

关于位运算的错误问题相关推荐

  1. 【位运算】起床困难综合症(包含错误思路点拨)

    原题 解题思路一(错误): 顺着做(每个数用数组存)的思路是人脑思路,但是电脑会TLE.我们可以反着来. 大概的思路就是先假设一个最终结果的最大值. 然后问电脑:这数运算回去(按照输入的门的顺序,逆着 ...

  2. 技术图文:位运算技术在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第一篇图文. 在总结这篇图文的时候,顺便把遇到的坑写了两篇辅助的图文,大家可以参考一下: 有符号整型的数据范围为什么负数比正数 ...

  3. 为什么地磅的读数有进制么_谈谈二进制(三)——位运算及其应用

    0. 概要 前两篇文章我们了解了二进制的基本原理(谈谈二进制(一))以及二进制的四则运算(谈谈二进制(二)),本篇我们一起来看看二进制的位运算.先来看一下有哪些位运算: 上表中列出了我们编程语言中的所 ...

  4. java 枚举 或运算_Objective-C 枚举 中位运算 的使用

    前言 Enum,也就是枚举,从C语言开始就有了,C++.Java.Objective-C.Swift这些语言,当然都有对应的枚举类型,功能可能有多有少,但是最核心的还是一个--规范的定义代码中的状态. ...

  5. php使用位运算来实现日留存的算法

    文章目录 一.前言 二.位运算实现逻辑 1.逻辑部分如下 2.存入数据库部分的代码 3.查询数据库示例 4.php读取字段,并用位与运算解开存留信息 三.偶然发现的bug(php大数计算问题) 1.科 ...

  6. 关于longlong与位运算

    数据规模: int: -(2^31-1) ~ +(2^31-1) long long:-(2^63-1) ~ +(2^63-1) 由于默认的数字都是int型,所以在做乘法运算时会很容易想到int的溢出 ...

  7. [Leedcode][JAVA][第67题][二进制求和][位运算][字符串]

    [问题描述][简单] 给你两个二进制字符串,返回它们的和(用二进制表示).输入为 非空 字符串且只包含数字 1 和 0.示例 1:输入: a = "11", b = "1 ...

  8. 程序员面试金典 - 面试题 01.01. 判定字符是否唯一(位运算,牛)

    1. 题目 实现一个算法,确定一个字符串 s 的所有字符是否全都不同. 示例 1: 输入: s = "leetcode" 输出: false 示例 2: 输入: s = " ...

  9. python写整数逆位运算_位运算

    a = 60 # 0011 1100 b = 13 # 0000 1101 运算符 描述 示例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 a& ...

最新文章

  1. 【分析】2014移动互联网数据报告(终极版必收!)
  2. Python基础(一)简介与安装
  3. python视频人脸检测_Python学习案例之视频人脸检测识别
  4. 显示桌面,原来这么简单的
  5. 滤波器设计(二)模拟到数字
  6. Springboot2拦截器与文件上传
  7. 知识蒸馏 | 知识回顾
  8. 时间计算题100道_上海六年级数学第二学期有理数加减混合计算题100道【含答案】...
  9. primeng dropdown ngmodel 选择项初始化
  10. 第八章、所有者权益及损益的核算
  11. 椭圆型变分问题理论及数值方法
  12. java 基础面试练习题(易错题)
  13. 收集的各个方向的开发视频教程,分享给自学的同学
  14. 联邦学习综述(二)——联邦学习的分类、框架及未来研究方向
  15. vSphere之VMkernel网络层
  16. 校园网络的规划与实施(思科)
  17. mysql 大量数据插入优化
  18. 【保研】2020年交大、南大、国防科大、北理计算机夏令营经历
  19. greenplum添加监控
  20. bmp格式怎么转换?教你三步快速转图片格式

热门文章

  1. Wpf拖动按钮实现(二)
  2. 【读书笔记】C#高级编程 第一章
  3. 添加水印(文字and图片)
  4. DXPerience6.x 使用体会(二)
  5. Linux 分析工具--性能
  6. [Go] go get获取官方库被墙解决
  7. Flutter Android/iOS包大小分析
  8. 2018 SaaS应用大会 掀起SaaS应用新浪潮
  9. ASP.NET Core 2.0 使用支付宝PC网站支付
  10. Linus Torvalds将中国亮相LinuxCon + ContainerCon + CloudOpen