IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> CAPP DATALAB---LAB1 -> 正文阅读

[C++知识库]CAPP DATALAB---LAB1

CAPP DATALAB—LAB1

一.环境配置

咱说实话也不知道环境配置,为啥要配置反正学长让配了,那咱就配[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lD0PYEph-1647779319302)(file:///D:\QQ文件保存\1715597938\Image\Group2\19\M%\19M%HY%I4[G@IC3N2%0SFFI.jpg)]

1、编译环境 g++ gcc

很简单哈,就上网上一搜,欸 ubuntu配置gcc g++环境一堆的教程,实在不想搜我把这个网站放这里

环境配置非常的简单哈。

2.调试环境 gdb-peda ,gdb

也是同上的方法,我不会,别人能也不会嘛[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-736bNxc5-1647779319304)(file:///D:\QQ文件保存\1715597938\Image\Group2\19\M%\19M%HY%I4[G@IC3N2%0SFFI.jpg)]

同样 不想找的我把链接放里面链接。也是非常的简单啊。

3.下载vscode

这个 直接在虚拟机的浏览器上找就行了,然后安装,要是也不会。链接dddd。

二.做题datalab-1

我开始也不会,好像就从头到尾三个指令

make dtest//更新文本
./dtest -g//运行
./dtest //查看错误

其实里面的洋文我也看不懂,翻译过来也是半懂。有时候甚至开始怀疑自己是不是made in china

img

1.bitxor

这个题,我是很不理解, 用&和~运算实现^

/*
 1* bitXor - x^y using only ~ and &
 *   Example: bitXor(4, 5) = 1
 *   Legal ops: ~ &
 *   Max ops: 14
 *   Rating: 1
 */
int bitXor(int x, int y) {

题意就是用and 与运算 与非运算 使X Y 实现异或运算 就是用 加减法实现乘除法 大概就是这个意思。

int bitXor(int x, int y) {
   int xor=~(~x&~y)&~(x&y);
    return xor;

这个刚开始做 确实不会 然后查了一下 是运用了离散数学 的德摩根律

2.tmin

tmin - return minimum two's complement integer 
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 4
 *   Rating: 1
 */
int tmin(void) {
    int a = 1;
    return a << 31;

这个题是取32位数的最小值 之前听那个滴水逆向课的时候讲过最小值就是符号位是1其余全为0 即

1<<31

3.isTmax


 * isTmax - returns 1 if x is the maximum, two's complement number,
 *     and 0 otherwise 
 *   Legal ops: ! ~ & ^ | +
 *   Max ops: 10
 *   Rating: 1
 */
int isTmax(int x) {

这道题的意思就是 判断X是不是最大值 是的话 返回1 否则返回0

思路就是 假设X为最大值0x7fffffff 加1就为 0x80000000

则x+a=0xffffffff a取反!a=0 使x=x+a 即x=32个1 ~x=32个0 所以 要使之返回1则 !(x+a)中的x+a=0 即x=0 a=0

int isTmax(int x) {
 int a=x+1;
	x=x+a;
	a=!a;
	x=~x;
  return !(x+a);

4.alloddbits

 allOddBits - return 1 if all odd-numbered bits in word set to 1
 *   where bits are numbered from 0 (least significant) to 31 (most significant)
 *   Examples allOddBits(0xFFFFFFFD) = 0, allOddBits(0xAAAAAAAA) = 1
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 12
 *   Rating: 2
 *

题目的意思就是如果如果字中所有奇数位都设置为1,则返回1其余的返回0

先int一个a定义为 0xaaaaaaaa 转成二进制就是10101010101010101010101010101010。

让他与X进行与运算 即 只有当x的奇数为为1时进行与运算时不变 且进行与运算后 x奇数位全为1时 x=a

让x^a=0 则 后面的返回值设为 !(x^a)即可达成题目需求。

int allOddBits(int x) {
    int a=0xaaaaaaaa;
    int s=(a&x)^a;
  return !s;

5.nagate

negate - return -x 
 *   Example: negate(1) = -1.
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 5
 *   Rating: 2

返回-x

很简单 取x的补码+1

int negate(int x) {
int a=~x;
    x=a+1;
  return x;

6.isasciidigit

 isAsciiDigit - return 1 if 0x30 <= x <= 0x39 (ASCII codes for characters '0' to '9')
 *   Example: isAsciiDigit(0x35) = 1.
 *            isAsciiDigit(0x3a) = 0.
 *            isAsciiDigit(0x05) = 0.
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 15
 *   Rating: 3
 */

这个就是比较大小

如果 0x30<=x<=0x39就返回 1否则返回0。

思路就是 看符号位

如果 x-30 >0则他的符号位一定是0 反之为1

同理 39-x>0则他的符号位肯定也是0 反之为1

完成 减法运算可以用一个数加上他的补码+1

取符号位的操作就是 右移31位

int isAsciiDigit(int x) {
int a=x+(~(0x30)+1);
int b=(~x+1)+0x39;
int c=a>>31;
int d=b>>31;
int f=!c;//(取反让0变1)
  return f&!d;

7.conditional

 conditional - same as x ? y : z 
 *   Example: conditional(2,4,5) = 4
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 16
 *   Rating: 3

这个题的意思就是实现三目运算

这个题不太会 。寄了

7.conditional

 conditional - same as x ? y : z 
 *   Example: conditional(2,4,5) = 4
 *   Legal ops: ! ~ & ^ | + << >>
 *   Max ops: 16
 *   Rating: 3

这个题的意思就是实现三目运算

这个题不太会 。寄了

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:30:29  更:2022-03-21 20:30:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:24:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码