C Primer Plus(第六版)15.9 编程练习 第5题

//

// main.c

// 15.9-5

//

// Created by cjm on 2024/2/5.

//

#include <stdio.h>

#include <limits.h>

char * itobs(int n, char * ps);

unsigned int rotate(unsigned int x,int i);

int main()

{

unsigned int x=2999999999;

printf("%u\n",rotate(x,3));//注意这里的打印格式

return 0;

}

unsigned int rotate(unsigned int x,int i)

{

unsigned int len;

len = sizeof (unsigned int)*CHAR_BIT;

char str[len+1];

while(i!=0)

{

printf("旋转前 x=%s\n",itobs(x, str));

printf(" x<<1=%s\n",itobs(x<<1, str));

printf("x>>(len-1)=%s\n",itobs(x>>(len-1), str));

x=x<<1|((x>>(len-1))&1);

printf("旋转后 x=%s\n",itobs(x, str));

i--;

}

return x;

}

char * itobs(int n, char * ps)

{

int i;

const static int size = CHAR_BIT * sizeof (int);

for (i = size - 1; i >= 0; i--, n >>= 1)

{

ps[i] = (01 & n) + '0';

}

ps[size] = '\0';

return ps;

}

相关推荐
mount_myj8 小时前
长长久久【C语言】
c语言
九转成圣9 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio9 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython9 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫9 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch9 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI9 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn
Brendan_0019 小时前
JavaScript的Stomp.over
开发语言·javascript·ecmascript
念2349 小时前
f5 shape分析
开发语言·javascript·ecmascript
苍穹之跃9 小时前
某量JS逆向
开发语言·javascript·ecmascript