首页 > 其他分享 >偶数位(熟悉二进制)

偶数位(熟悉二进制)

时间:2023-01-11 20:57:23浏览次数:30  
标签:二进制 偶数 int num 按位 熟悉 十进制

  几天没写了,今天写一个简单的小题

 

   这道题乍一看,有点没有头绪,但是仔细考虑,也不是毫无头绪.

  思路1:

  只要会十进制和二进制之间的转换,将十进制转二进制,然后存放到数组里面,接着进行偶数位的操作,最后在转十进制就好;

但是,有没有更好的方法呢?

思路2:

计算机里面数字的存储本来就是二进制,为何要复杂的转来转去?只要想办法对二进制直接操作就好;

这里我们可以考虑 >> 按位右移这一操作符,只要从第0位开始,每次按位右移2位,这样就可以在对每一位的0或1操作就好

那么现在考虑的就是,进行操作后,数值和以前变化关系,只要对二进制熟悉,进很容易知道,第几位的数字,大小就是2的几次方,假设是第n位,表示的就是 2 ^ n;

那么,改之后的数字就比原数值小 2 ^ n ;只要减去这一个数值就好;

现在还有一个问题就是如何确定这一位是0 还是 1 ; 如果你记得 & (按位与)这个操作符就很简单;

& 按位与 ,同一得一; 1 & 1 = 1 ; 0 & 1 = 0 ; 0 & 0 = 0 ;(这里都是等于,不是赋值,只是为了方便);

#include<stdio.h>
#include<math.h>

int main() 
{ 
    int n = 0;
    int i = 0;
    scanf("%d",&n);
    int num = n;
    for (i = 0 ; i < 32 ; i += 2)
    {
        if (1 == ((n >> i) & 1))
        {
            num -= pow(2 , i);
        }
    }
    printf("%d",num);
    return 0; 
}

  简简单单,答案就出来了;

  只需要简简单单几行,不想第一种方法,翻来覆去;

  

标签:二进制,偶数,int,num,按位,熟悉,十进制
From: https://www.cnblogs.com/Code-wangg/p/17044867.html

相关文章

  • struct --- 将字节串解读为打包的二进制数据
    面对网络协议,在组包拆包时,python提供了struct模块,可以在python值和C语言的结构体之间相互转换。格式字符串格式字符串的第一个字符可用于指示打包数据的字节顺序,大小和对......
  • k8s1.20二进制安装
    一、集群信息192.168.1.5vm5master1etcd192.168.1.6vm6master2etcd192.168.1.7vm7master3etcd192.168.1.8vm8node01证书说明:二、初始化#关闭防火......
  • 牛客进阶题目13:时钟分频(偶数)
    用计数器来翻转即可`timescale1ns/1nsmoduleeven_div(inputwirerst,inputwireclk_in,outputwireclk_out2,outputwir......
  • [kubernetes]二进制部署k8s集群
    0.前言采用二进制部署三主三工作节点的k8s集群,工作节点和Master节点共用服务器,因此只用到了三台服务器。master采用haproxy+keepalive实现高可用。实际生产环境中,建议......
  • 【LeeCode】1295. 统计位数为偶数的数字
    【题目描述】给你一个整数数组 ​​nums​​,请你返回其中位数为 偶数 的数字的个数。​​​https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/des......
  • keepalived+nginx二进制安装
    keepalived二进制安装1、下载keepalived安装包:keepalived下载地址:https://www.keepalived.org/download.htmlwgethttp://www.keepalived.org/software/keepalived-2.0......
  • 调整奇数偶数顺序
    【题目名称】调整奇数偶数顺序【题目内容】调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的......
  • 二进制数和十六进制数
    最后再补充说明一下二进制数和十六进制数的关系。在以位为单位表示数据时,使用二进制数很方便,但如果位数太多,看起来就比较麻烦。因此,在实际程序中,也经常会用十六进制数来代......
  • 用二进制数表示小数
    由于计算机内部所有的信息都是以二进制数的形式来处理的,因此在这一点上,整数和小数并无差别。不过,使用二进制数来表示整数和小数的方法却有很大的不同。  上图是把1011.......
  • 力扣每日一题2023.1.6---2180. 统计各位数字之和为偶数的整数个数
    给你一个正整数num,请你统计并返回小于或等于num且各位数字之和为偶数的正整数的数目。正整数的各位数字之和是其所有位上的对应数字相加的结果。示例1:输入:num=......