C语言经典100例题(55)--从一个整数a中把从右端开始的4-7位取出来

这篇具有很好参考价值的文章主要介绍了C语言经典100例题(55)--从一个整数a中把从右端开始的4-7位取出来。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

题目

问题分析

右移操作符

左移操作符

方法一

方法二 

运行结果


题目

用c语言从一个整数a中把从右端开始的4-7位取出来  

问题分析

右移操作符

        右移操作符是一种位运算符,用于将二进制数向右移动指定的位数。它通常用符号" >> "表示。右移一位相当于将二进制数除以2,右移n位相当于将二进制数除以2的n次方。

        例如,二进制数1101右移两位,结果为0011,相当于十进制数13除以4。

        在计算机程序中,右移操作符用于对数据进行位处理,例如提取某些位信息,对数据进行分组,加密等。

左移操作符

        左移操作符是一种位运算操作符,通常用于将二进制数向左移动指定的位数。在大部分编程语言中,左移操作符用符号“<<”表示。

        例如,将二进制数1010(十进制数为十)左移两个位,则得到结果为0100(十进制数为四)。

        在计算机中,左移操作符可以用于加速计算,因为左移一位相当于乘以2的1次方,左移n位相当于乘以2的n次方。因此,左移操作符常用于优化代码的性能。

方法一

 可以使用位运算和移位操作来取出这些位,具体实现如下:

#include <stdio.h>

int main() {
    int a = 0b1010111101010101; // 假设a为二进制数1010111101010101
    int b = (a >> 3) & 0b1111; // 取右端第7~4位,即把a右移3位再与0b1111(二进制数1111)按位与
    printf("%d\n", b); // 输出结果为1010,即十进制数10
    return 0;
}

        其中,>>表示右移操作,把二进制数向右移动指定的位数,即把右端的位数舍去;&表示按位与运算,两个二进制数按位取与,即对应位置上的数都为1时结果为1,否则为0。在此代码中,首先将a向右移动3位,即保留右端第7~4位,然后再与0b1111按位与,即把左侧的位数都清零,最终得到的结果就是从右端开始的4-7位。 

方法二 

(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。

#include <stdio.h>
int main()
{
	unsigned a, b, c, d;
	scanf("%o", &a);//输入一个二进制数
	b = a >> 3;  //(1)先使a右移3位。
	c = ~(~0 << 4);  //(2)设置一个低4位全为1, 其余全为0的数。
	d = b & c;          //(3)将上面二者进行& 运算
	printf("%o\n%o\n", a, d);
}

运行结果

 C语言经典100例题(55)--从一个整数a中把从右端开始的4-7位取出来,C语言经典100例题,c语言文章来源地址https://www.toymoban.com/news/detail-705869.html

到了这里,关于C语言经典100例题(55)--从一个整数a中把从右端开始的4-7位取出来的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言递归算法实现经典例题

    递归是一种编程技术,它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时,这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中,每个调用都会将一些数据保存在栈上,直到递归结束后才能被处理并弹出栈。 递归通常有两个部分:

    2024年02月05日
    浏览(58)
  • C语言递归及经典例题详解

      什么是递归? 什么时候使用递归 例题1 顺序打印问题 例题2 求n的阶乘 例题3 求第n个斐波那契数 经典 汉诺塔问题 经典 青蛙跳台阶问题   什么是递归? 递归就是程序调用自身的编程技巧。递归通常把一个大型复杂的问题层层转化为一个与原问题相似,规模较小的问题来求

    2024年02月05日
    浏览(39)
  • c语言经典例题讲解(输出菱形,喝汽水问题)

    目录 一、输出菱形 二、喝汽水问题 方法1:一步一步来   方法二:直接套公式   输出类似于下图的菱形:    通过分析:1、先分为上下两部分输出                    2.在输出前先输出空格                   3.找规律进行输出 可知,可令上半部分line行,下半部分便是

    2024年02月13日
    浏览(37)
  • 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

    题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 完全平方指用一个整数乘以自己例如1×1,2×2,3×3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。 完全平方数是非负数 (下面会说到

    2024年02月04日
    浏览(42)
  • C 语言经典100例(菜鸟在线工具)

    C 语言经典100例 C 语言经典100例 菜鸟工具 C代码在线运行工具 搜索引擎 前端开发

    2024年02月11日
    浏览(37)
  • C语言经典编程题100例(61~80)

    目录 61、练习7-7 矩阵运算 62、练习7-8 方阵循环右移 63、习题6-1 分类统计字符个数 64、习题6-2 使用函数求特殊a串数列和 65、习题6-4 使用函数输出指定范围内的Fibonacci数 66、习题6-5 使用函数验证哥德巴赫猜想 67、习题6-6 使用函数输出一个整数的逆序数 68、练习8-2 计算两数的

    2024年02月02日
    浏览(40)
  • C语言编程经典100例——11至20例

    目录 第 11 例 第 12 例 第 13 例 第 14 例 第 15 例 第 16 例 第 17 例 第 18 例 第 19 例 第 20 例 程序源码: 程序运行结果: 程序源码: 程序运行结果: 程序源码: 程序运行结果: 程序源码: 程序运行结果: 程序源码: 程序运行结果: 程序源码: 程序运行结果: 程序源码:

    2024年02月07日
    浏览(41)
  • C语言:输入百分制成绩(0-100间整数),输出相应的五级制成绩(A-E)。

    C语言:输入百分制成绩(0-100间整数),输出相应的五级制成绩(A-E)。A-[90,100]、B-[80,89]、C-[70,79]、D-[60,69]、E-[0,59]。

    2024年02月11日
    浏览(39)
  • c语言——输出一个整数的所有因数

      当对这段代码进行分块分析时,可以将其分为以下几个部分: 第一部分: 这部分代码包含了头文件 stdio.h 和 stdlib.h 的引入以及 main() 函数的定义。定义了一个整型变量 number ,用于存储用户输入的整数。还定义了一个整型变量 i ,用于循环计数。 通过 printf 函数打印出提示

    2024年02月12日
    浏览(40)
  • C语言程序之经典习题:while循环计算1到一百(100)所有数据之和

    C语言程序之经典习题:while循环计算1到一百(100)所有数据之和 思路:首先是定义两个变量sum和date,数字和1到100的和 引入while循环 目的是使循环到100就停止, 我们一步步来,先来循环出1到100, 然后再来计算1到100的和---sum = sum + date;//累加0到100的和 然后在循环内写出累加

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包