当前位置: 首页 > news >正文

深入理解计算机系统 家庭作业 2.66

/*

前置条件:无符号整数右移不产生1

调用函数是为了可以查看整个过程,不影响结果.
思路是让x在右移的过程中,把最高位之前的位全部填满.
填满后的结果右移一位(即x的最高位变为0,其他为1),再异或x得到最高位
 

以此类推知道覆盖到32位.
*/

#include <stdio.h>
#include <stdlib.h>

unsigned leftmost_one(unsigned x);

int main(void)
{
    char s[32];
    unsigned x =0x10100000;
    itoa(x,s,2);
    itoa(leftmost_one(x),s,2);
    printf("1x=0x\t\t%32s\n",s);


}

unsigned leftmost_one(unsigned x)
{
    char a[32];
    itoa(x,a,2);
    printf("a|=x>>0=0x\t%32s\n",a);
    x|=x>>1;//第一次往后复制1次最高位(填满了2位),

    itoa(x,a,2);
    printf("a|=x>>1=0x\t%32s\n",a);
    x|=x>>2;//第二次往后复制第一次的结果(填满了2*2位)

    itoa(x,a,2);
    printf("a|=x>>2=0x\t%32s\n",a);
    x|=x>>4;//第三次往后复制第二次的结果(填满了2*2*2位)
    itoa(x,a,2);
    printf("a|=x>>4=0x\t%32s\n",a);
    x|=x>>8;
    itoa(x,a,2);
    printf("a|=x>>8=0x\t%32s\n",a);
    x|=x>>16;
    itoa(x,a,2);
    printf("a|=x>>16=0x\t%32s\n",a);
    return x^(x>>1);
}

http://www.lryc.cn/news/330288.html

相关文章:

  • 【服务端】node.js详细的配置
  • 二、CentOS基础配置(1.网络与包管理)
  • Golang基础-5
  • Mysql数据库:故障分析与配置优化
  • 常见的图像分析算法
  • 朵米3.5客服系统源码,附带系统搭建教程
  • Python 踩坑记
  • 搭建Spark单机版环境
  • 使用Flutter混淆技术保护应用隐私与数据安全
  • ClickHouse初体验
  • 在k8s中部署高可用程序实践和资源治理
  • WebView的使用与后退键处理-嵌入小程序或者 H5 页面
  • 【攻防世界】file_include (PHP伪协议+过滤器)
  • Linux 内核中PHY子系统(网络):PHY驱动
  • 【六 (1)机器学习-机器学习算法简介】
  • TCP服务端主动向客户端发送数据
  • ObjectiveC-03-XCode的使用和基础数据类型
  • YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer
  • 원클릭으로 주류 전자상거래 플랫폼 상품 상세 데이터 수집 및 접속 시연 예제 (한국어판)
  • 2024年github开源top100中文
  • 回收站删除的文件在哪里?专业恢复方法分享(最新版)
  • 什么是工时管理软件?
  • 一文解析智慧城市,人工智能技术将成“智”理主要手段
  • SQLBolt,一个练习SQL的宝藏网站
  • TikTok防关联引流系统:全球多账号运营的终极解决方案
  • 卷积神经网络(CNN)的数学原理解析
  • 2024年华为OD机试真题-亲子游戏-Java-OD统一考试(C卷)
  • 大模型显存占用分析
  • matlab中旋转矩阵函数
  • 探讨Spring Boot的自动配置原理