第五章 习题

下列输出的值:

#include <stdio.h>

int func(){
	static int count = 1;
	return ++count;
}

int main()
{
	int answer = 0;
	answer = func() - func() * func();
	printf("%d\n", answer);

	return 0;
}

answer = 2 - 3 * 4;

所以结果 -10;

5.3 编写函数 unsigned int reverse_bits(unsigned int value);将二进制模式从左到右变换,输入25输出2 550 136 832

#include <stdio.h>

//反转bit位
unsigned int reverse_bits(unsigned int value)
{
	unsigned int result = 0;
	unsigned int tmp = 1;
	//计算unsigned int位数
	int len = sizeof(unsigned int) * 8;
	int idx;

	//每次向右位偏移一位
	for(idx = 0; idx < len; idx++){
		//判断bit值,如果是1
		if(((value >> idx)) & 1){
			//则将tmp中对应的另一端的位置为1
			tmp = 1 << (len - idx - 1);
			//tmp和result取或运算置位1
			result |= tmp;
		}
	}
	return result;
}
//将value二进制形式打印出来
void print_bits(unsigned int value)
{
	int len = sizeof(unsigned int) * 8;
	int idx;
	int bit;

	for(idx = 1; idx <= len; idx++){
		//从左往右,通过位偏移后,和1取与运算,打印bit位的值
		bit = 1 & (value >> (len - idx));

		printf("%d", bit);
		//四位一空,方便阅读
		if(idx % 4 == 0){
			printf(" ");
		}
	}
	printf("\n");
}

int main()
{
	unsigned int input = 25;
	unsigned int result;

	printf("%d\n", input);
	print_bits(input);

	result = reverse_bits(input);

	printf("%u\n", result);
	print_bits(result);

	return 0;
}

  输出:

25
0000 0000 0000 0000 0000 0000 0001 1001
2550136832
1001 1000 0000 0000 0000 0000 0000 0000

5.5把给定的值存储到一个整数中指定的几个位

#include <stdio.h>

int store_bit_field(int original_value, int value_to_store, unsigned starting_bit, unsigned ending_bit)
{
	int mask = 0;
	int tmp  = 0;
	//制作对应的起始位置掩码
	for(int idx = starting_bit; idx >= ending_bit; idx--){
		tmp = 1 << idx;
		mask |= tmp;
	}

	//通过掩码将original_value 对应的范围内置0
	original_value &= ~mask;
	//将value_to_store对齐起始和结束位置
	value_to_store  <<= ending_bit;
	//value_to_store中将超出范围的部分置0
	value_to_store &= mask;
	//将值和original_value取或保存值
	original_value |= value_to_store;

	return original_value;
}

int main()
{
	int result;
	result = store_bit_field(0xffff, 0x123, 13, 9);
	printf("0x%0x\n", result);

	return 0;
}

  输出:

oxc7ff

  

时间: 2024-10-24 12:43:27

第五章 习题的相关文章

《学习Opencv》第五章 习题6

这是第五章 习题5.6的结合版,其中实现了摄像头抓拍功能,能够成功运行. #include "stdafx.h" #include "cv.h" #include "highgui.h" void* getImage() { CvCapture* capture=cvCreateCameraCapture(0); IplImage *img1=NULL,*img2=NULL,*img3=NULL,*frame=NULL,*ppImage=NULL

Python核心编程(第二版) 第五章习题答案

5-1.整型.讲讲Python普通整型和长整型的区别. 答:Python 的标准整数类型是最通用的数字类型.在大多数 32 位机器上,标准整数类型的取值范围是-2**31到 2**31-1,也就是-2,147,483,648 到 2,147,483,647.如果在 64 位机器上使用 64 位编译器编译 Python,那么在这个系统上的整数将是 64 位. Python 的长整数类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关. 5-2.操作符.(a)写一个函数,计算并返回两个数的乘积.

Python核心编程第五章习题

Python核心编程-第五章-习题 5.1  整形,讲讲Python普通整形与长整形的区别? Python的标准整形类型是最通用的数字类型.在大多数32位机器上,标准整形类型的取值范围是-2**32-2**32 - 1. Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数. 长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,3.0版本已经统一称为为整

第五章习题答案

第五章练习题答案?1. 查看配置文件/etc/shadow第一行中root账号的第三个字段(以':'分隔)中的数字,请算一下这个数字是怎么来的?距离1970年1月1日到上次更改密码的时间的间隔天数.例如root密码日期更改时间为2013年9月1日星期日,那么配置文件/etc/shadow中root的第三个字段为15949,计算如下:?15949 = (2013-1970)*365+mod((2013-1970)/4)+(5*31+2*30+28)+1=15695+10+241+1=15949?

Objective-C 程序设计(第六版)第五章习题答案

1. NSLog(@"数字N N的平方"); NSLog(@"--------------------"); for (int n = 1; n <= 10; n++) { NSLog(@"%2d %d",n,n*n); } //结果如下 2014-09-27 15:00:26.457 prog1[1218:303] 数字N N的平方 2014-09-27 15:00:26.459 prog1[1218:303] -------------

[数据结构]第五章习题作业

1. 已知下图是一个森林的孩子-兄弟表示法的存储结构,画出这个森林的逻辑图. A B C D E F G H I J 2. 下面的二叉树,请为它建立中序遍历线索.已知一指针p指向E,问从p出发利用线索找到E的第4个后继节点,需要访问几次二叉树的节点(重复访问的也计算在内,E点不算)? 3. 已知一个二叉树的先序遍历结果是:a b d e g c f h,中序遍历的结果是:d b e g a c h f .问后序遍历的结果将是什么? 4. 将数组13,5,10 ,7,27,9,4,15,33,20

java编程思想第四版第五章习题

创建一个类, 它包含一个未初始化的String引用.验证该引用被Java初始化成了null package net.mindview.initialization; public class Test1 { public String str; public static void main(String[] args) { Test1 t = new Test1(); System.out.println(t.str); } } 返回结果 null 创建一个类, 它包含一个在定义时就被初始化了

网络操作系统第五章习题

1.比较说明FAT文件系统和NTFS文件系统的特点? FAT 文件系统原来使用在dos或win9x系列系统上的.有一系列 fat16.fat32等,每一代对最大分区大小有一定的限制(比如 fat16 每个分区最大只支持2G). 一代一代性能逐渐提高.支持目录结构,支持长文件名,是一个有基本功能的操作系统.NTFS 文件系统首先应用在 WIN NT 类的系统上.比起FAT类文件系统最显著的特点就是能够设定文件或文件夹的访问权限.也因此会更多的占用磁盘空间. (比如一个100G的硬盘,使用fat能用

python-第五章习题

5.2 def isOdd(x): if(x%2==0): return False return True x=eval(input("")) print(isOdd(x)) 5.3 def isNum(s): try: s=type(eval(s)) if(s==type(1)): return True elif(s==type(1.0)): return True elif(s==type(1+j)): return True except: return False s=in