[原创] C语言位运算和bit位操作程序题目答案 -- 谭浩强C语言习题答案
2011-03-19 21:19
375 查看
这两天复习RenMian给我留下谭浩强的C语言教程,温故而知新,夯实基础知识,
把谭浩强版C语言的第十二章《位运算》的书复习后把所有的编程习题做了一遍,贴出来激励自己一下,也希望有用的同学可以参考,时间和水平有限,不足之处,恳请读者批评指正
第十二章《位运算》答案如下
inc/testBits.h
src/main.cc
把谭浩强版C语言的第十二章《位运算》的书复习后把所有的编程习题做了一遍,贴出来激励自己一下,也希望有用的同学可以参考,时间和水平有限,不足之处,恳请读者批评指正
第十二章《位运算》答案如下
inc/testBits.h
unsigned short getbits(unsigned short value, int n1, int n2) { unsigned short usRet = 0, usTemp = 0, usMask = 0; usTemp = value >> n1; usMask = ~( ~0 << (n2 - n1 + 1)); usRet = usTemp & usMask; return usRet; } short getComplement(short n) { short sRet = 0; if (n >= 0) { sRet = n; } else { sRet = -n; sRet = ~sRet; sRet = sRet + 1; } return sRet; } unsigned short move(unsigned short value, int n) { unsigned short usTemp = 0, usDest = 0; assert(n != 0); if (n > 0) { usTemp = value << (16 -n); usDest = value >> n; } else { n = -n; usTemp = value >> (16 - n); usDest = value << n; } usDest = usDest | usTemp; return usDest; } int test_12_1() { unsigned short usRet = 0; usRet = getbits(0x83BD, 4, 7); if (usRet == 0xB) { printf("Test_12_1 Passed! /r/n"); return 0; } return 1; } int test_12_2() { int ite = 0, iRet = 0; unsigned short usDest = 0, usSrc = 0xFFFF, usMask = 0; for(ite = 0; ite < 16; ite += 2) { usMask = 1 << ite; usDest = usDest | (usSrc & usMask); } if (usDest == 0x5555) { printf("Test_12_2 Passed! /r/n"); return 0; } return 1; } int test_12_4() { unsigned short usDest1 = 0, usDest2 = 0, usSrc = 0xFFF7; usDest1 = move(0xFFF7, 4); usDest2 = move(0xFFF7, -4); if (usDest1 == 0x7FFF && usDest2 == 0xFF7F) { printf("Test_12_4 Passed! /r/n"); return 0; } return 1; } int test_12_5() { short sDest = 0, sSrc = -10; sDest = getComplement(sSrc); if (sDest == 0xFFFFFFF6) { printf("Test_12_5 Passed! /r/n"); return 0; } return 1; } int testBits() { int iRet = 0; iRet += test_12_1(); iRet += test_12_2(); iRet += test_12_4(); iRet += test_12_5(); return iRet; }
src/main.cc
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include "../inc/testFile.h" #include "../inc/testBits.h" int main() { int iRet = 0; #if 0 iRet += testFile(); assert(iRet == 0); #endif iRet += testBits(); assert(iRet == 0); return 0; }
相关文章推荐
- [原创] 位运算和bit位操作程序题 -- 谭浩强C语言习题答案
- [原创] 指针操作程序答案 — 谭浩强C语言习题答案
- [原创] 指针操作程序答案 — 谭浩强C语言习题答案
- [原创] 文件I/O读写操作程序题目答案 -- 谭浩强C语言
- 【原创】第十三章《文件》程序题目答案 -- 谭浩强C语言
- C++程序设计(第二版)谭浩强----程序题课后习题答案第三章
- (原创)谭浩强C程序设计(第三版)-习题答案02
- C++程序设计(第二版)谭浩强----程序题课后习题答案第一章
- C++程序设计(第二版)谭浩强----程序题课后习题答案第二章
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序
- C语言习题5.24--文件操作1
- 四则运算题目生成程序
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于C++)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 谭浩强《C程序设计》(第三版)部分习题答案—第七章
- 2014年华为上机机试c语言题目和答案
- C语言:一个能自动生成小学四则运算题目的程序
- 学习go语言 我的习题答案 chapter3