首页 > 其他分享 >翻转一个整数的二进制数

翻转一个整数的二进制数

时间:2024-07-04 20:42:08浏览次数:15  
标签:二进制 整数 0x55555555 include uint32 翻转


/*
*	翻转一个整数的二进制数
*/

#include <stdint.h>
#include <stdio.h>

uint32_t reverse_bits(uint32_t n) {
    // 交换相邻位
    n = ((n & 0xAAAAAAAA) >> 1) | ((n & 0x55555555) << 1);
    // 交换每2位
    n = ((n & 0xCCCCCCCC) >> 2) | ((n & 0x33333333) << 2);
    // 交换每4位
    n = ((n & 0xF0F0F0F0) >> 4) | ((n & 0x0F0F0F0F) << 4);
    // 交换每8位
    n = ((n & 0xFF00FF00) >> 8) | ((n & 0x00FF00FF) << 8);
    // 交换每16位
    n = (n >> 16) | (n << 16);
    return n;
}

int main() {
    uint32_t num = 0x1; // 示例整数
    uint32_t reversed_num = reverse_bits(num);

    printf("Original: %08X\n", num);		
    printf("Reversed: %08X\n", reversed_num);

    return 0;
}

结果
image

标签:二进制,整数,0x55555555,include,uint32,翻转
From: https://www.cnblogs.com/waibibabu-/p/18284631

相关文章

  • IDA7.7 使用IDAPython搜索指定模式的二进制数据方法
    新版的ida弃用了idc.find_binary推荐使用ida_bytes.bin_search方法。ida_bytes.bin_search需要和ida_bytes.parse_binpat_str配合使用。ida_bytes.parse_binpat_str的功能类似于对正则表达式进行编译。ida_bytes.parse_binpat_str官方文档importida_bytesimportidaapiimpo......
  • 题目 3293: 蓝桥杯2024年第十五届决赛真题-数位翻转
    https://www.dotcpp.com/oj/problem3293.html 题目描述小明创造了一个函数f(x)用来翻转x的二进制的数位(无前导0)。比如f(11)=13,因为11=(1011)2,将其左右翻转后,变为13=(1101)2;再比如f(3)=3,f(0)=0,f(2)=f(4)=f(8)=1等等。小明随机出了一个长度为......
  • C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方
    要判断一个整数是否是2的N次方,可以使用位运算来实现。一个整数如果是2的N次方,那么它的二进制表示中只有一位是1,其余位都是0。可以通过将这个整数与它减去1的结果进行按位与运算,如果结果为0,则说明这个整数是2的N次方。以下是一个示例代码:publicboolIsPowerOfTwo(intnumber)......
  • 151.翻转字符串里的单词 卡码网:55.右旋转字符串
    151.翻转字符串里的单词卡码网:55.右旋转字符串 151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode) Code:classSolution{public:  stringreverseWords(strings){​    //单词级翻转,而不是单词内翻转  ​......
  • 二进制中为什么负数是正数取反再加一
    二进制中的负数表示有一个重要的概念是补码,它是由对应正数二进制取反后再加1得到的。但是经常忘记为什么要这么表示,这里结合chatgpt解释做个简单的总结。补码(Two'sComplement)设计的逻辑来自于简化和统一计算机中有符号数的表示和运算。其设计逻辑可以追溯到计算机科学中的一......
  • CentOS 7基于开源项目制作openssh9.8p1 rpm二进制包修复安全漏洞CVE-2024-6387 ——
    2024年7月1日,官方发布openssh9.8版本,修复了安全漏洞CVE-2024-6387。此处主要基于开源项目https://github.com/boypt/openssh-rpms.git制作,之前也有写过类似的文章,这里就不再赘述。CentOS5/6/7基于开源项目制作openssh9.6p1rpm包——筑梦之路_centos6openssh9.6rpm-CSD......
  • 代码随想录算法训练营Day9 | 字符串 151.翻转字符串单词 28.实现strStr() KMP算法介绍
    python中常用:        s[::-1]: 反转整个字符        s.strip():删除开头或结尾处的空白字符     s.split():字符拆分成单词 →list    “”.join(s):list→字符串   (持续更新…) 151.翻转字符串里的单词 题目: Leetcod......
  • 正整数N转换成一个二进制数2
    题目网址:https://bzoj.org/p/Z1600Description输入一个不大于32767的正整数N,将它转换成一个二进制数Input输入只有一行,包括一个整数n(n<=32767)Output输出只有一行,包含一个二进制数,数字之间以空格分开Samples输入数据1100输出数据11100100Sol:转化二进制法......
  • Linux下二进制可执行文件分析 (nm,readelf,objdump 命令使用)
    最近在调试一些问题,发现几个命令很实用,记录一下。一 背景    也许大家都遇到过这种场景,就是有二进制代码,比如深度分析下此文件到底是什么格式的图片等,这篇文章就记录我分析下二进制可执行文件的过程,已经自己读写二进制文件的一些坑。分析的二进制执行文件为linux下......
  • Day8 翻转字符串里面的单词,右旋字符串
    翻转字符串里面的单词我觉得这道题是一道可以很好的帮助我们的理解再次关于快慢双指针,希望我们能够经过我们多次的锻炼来提高自己的水平!题目在知道题里面,我们要做的不仅仅是单纯的翻转字符我们还需要将这个空格整掉,但是在每一个单词与单词之间我们还要有一个空格,所以我们......