/*------------------------------------
invert4.c -- 使用位操作显示二进制
------------------------------------*/ #include <stdio.h>
#include <limits.h> //提供 CHAR_BIT 的定义,CHAR_BIT 表示每字节的位数 char* itobs(int, char*);
void show_bstr(const char*);
int invert_end(int num, int bits); int main()
{
char bin_str[CHAR_BIT * sizeof(int) + ];
int number; puts("Enter integers and see them in binary.");
puts("Non-numeric input terminates program"); while (scanf("%d", &number) == )
{
itobs(number, bin_str); printf("%d is ", number); show_bstr(bin_str); putchar('\n'); number = invert_end(number, ); printf("Inverting the last 4 bits gives\n"); show_bstr(itobs(number, bin_str)); putchar('\n');
} puts("Bye"); return ;
} char* itobs(int n, char *ps)
{
const static int size = CHAR_BIT * sizeof(int); for (int i(size - ); i >= ; --i, n >>= )
ps[i] = ( & n) + ''; ps[size] = '\0'; return ps;
} //以4位为一组,显示二进制字符串
void show_bstr(const char *str)
{
int i = ;
while (str[i]) //不是空字符
{
fputc(str[i], stdout); if (++i % == && str[i])
fputc(' ', stdout);
}
} int invert_end(int num, int bits)
{
int mask = ;
int bitval = ; while (bits-- > )
{
mask |= bitval;
bitval <<= ;
} return num ^ mask;
}

invert4.c

第 15 章 位操作(invert4)的更多相关文章

  1. 第 15 章 位操作(binbit)

    /*------------------------------------ binbit.c -- 使用位操作显示二进制 ------------------------------------*/ ...

  2. 第 15 章 位操作(dualview)

    /*----------------------------------- dualview.c -- 位字段和按位运算符 -----------------------------------*/ ...

  3. 第 15 章 位操作(fields)

    /*----------------------------------- fields.c -- 定义并使用字段 -----------------------------------*/ #inc ...

  4. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  5. 【STM32H7教程】第15章 STM32H7的GPIO基础知识(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第15章       STM32H7的GPIO基础知识(重要) ...

  6. 第15章 LinkedList类(暂无)

    第15章 LinkedList类 LinkedList类是

  7. ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换

    15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...

  8. 第15章 设备无关位图_15.3 DIB和DDB的结合

    第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...

  9. unix network programming(3rd)Vol.1 [第13~15章]《读书笔记系列》

    第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(硬 ...

随机推荐

  1. 基于Ip的刷投票排名及刷百度推广的自动化实现

    所有基于Ip的刷投票排名,只要不涉及用户登录情况,都可以在手机端自动化实现,因为电信运营商的ip地址段是无限的,理论上,飞行模式开关一次,所分配ip地址是变化的,这就有了大量的ip可用 在手机端写个a ...

  2. 合并两个数组并去重(ES5和ES6两种方式实现)

    合并两个数组并去重(ES5和ES6两种方式实现) ES6实现方式 let arr1 = [1, 1, 2, 3, 6, 9, 5, 5, 4] let arr2 = [1, 2, 5, 4, 9, 7 ...

  3. springboot+cloud 学习(一)高可用服务注册中心(Eureka)

    先说说Eureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringClo ...

  4. 关于Markdown插入图片路径错误的问题

    关于Markdown插入图片路径错误的问题 开发问题 解决方法  妈耶,连续一天写2篇博客,也是醉了,这篇博客主要是介绍关于Markdown插入图片路径错误的问题 在上篇中,我介绍了一下Markdow ...

  5. C指针与内存

    C指针与内存 指针是C / C++ 中重要的构造类型,指针赋予了C / C++程序直接访问和修改内存的能力.C / C++的许多重要应用,如编译.OS.嵌入式开发都依赖于这种能力. 冯诺依曼体系的计算 ...

  6. 用01随机函数构造[a,b]整数范围随机数

    #include <stdio.h> #include <stdlib.h> #define RAND_0_1 (rand()&0x1) int random(int ...

  7. Intellij Idea出现 unable to establish loopback connection

    项目一运行就出现这个情况,好几次了,最后发现只要防火墙关闭,项目就可以运行成功.错误提示:“C:\Program Files\Java\jdk1.8.020\bin\java” -Xmx700m -D ...

  8. WebSerivce与WebAPI的区别

    一.什么是Web Service Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应 ...

  9. <Android 基础(三十三)> TabHost ~ 仿微信底部菜单

    简介 Container for a tabbed window view. This object holds two children: a set of tab labels that the ...

  10. 使用PeopleSoft 异步操作设置步骤

    在手机端调PS接口或同步数据到中间库等程序中经常用到异步操作. 在主菜单>PeopleTools>集成代理程序>集成设置中添加了服务和服务操作后需要设置以下3步才能完成异步程序: 1 ...