首页 > 其他分享 >学习记录:day07笔记

学习记录:day07笔记

时间:2023-03-21 20:44:51浏览次数:36  
标签:函数 记录 二进制 day07 补码 笔记 1111 八进制 原码

进制转换

1、为什么使用二进制、八进制、十六进制?

因为目前CPU只能识别高低两种电平,只能对二进制数据进行计算

二进制虽然能够直接别计算机识别但是不方便人去书写和记录,因此就把二进制数据转换成八进制,方便记录到文档中

随着CPU的位数的不断增加(目前已经到64位),八进制不再能够用满足需求,因此发展出现在的十六进制,由于历史原因八进制还不能退出历史舞台

2、十进制=》二进制

求余法:

127 % 2 1 低位

63 % 2 1

31 % 2 1

15 % 2 1

7 % 2 1

3 % 2 1

1 % 2 1

0

0111 1111

求权法:(从高位到低位凑)

134

128 64 32 16 8 4 2 1

1 0 0 0 0 1 1 0

练习 :73 62 121 49

0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 0 0 0 1

练习2:输入一个正整数m,然后输入n(n>=2),显示m的n进制结果

 

3、二进制转十进制

每位乘以位权,再求和

 

4、二进制转八进制

从低位起,每三个二进制位对应一个八进制位

二进制:10 101 110 101 101

八进制:2 5 6 7 4

 

5、二进制转十六进制

从低位开始,每四个二进制位对应一个十六进制位

二进制:10 1011 1011 1100

八进制:2 B B C

6、不同进制在程序中的显示

在C代码中,以0开头的数据是八进制数据,以0x/0X开头的十六进制数据

%x 让数据以十六进制显示

%o 让数据以八进制显示

%#x %#o 显示出数据对应的进制前缀

7、原码、反码、补码

原码:最高位表示数据正负的二进制

反码:

正数的反码就是原码

负数的反码:与原码符号位不变,其他位按位取反

补码:(所有数据在计算机中,都是以补码形式存储)

正数的补码就是原码

负数的补码:反码+1

-127

1111 1111 原码

1000 0000 反码

1000 0001 补码

 

8、补码如何转化为数据

先确定有符号还是无符号

1、无符号\有符号的最高位为0,补码直接转成十进制

2、有符号的最高位为1

a、补码-1,得到反码

b、符号位不变,其余位按位取反,得到原码

c、原码转十进制

1111 1111 补码

1111 1110 反码

1000 0001 原码

 

位运算符(针对补码)

& | ~ ^ << >>

A&B 按位与

1010 1110 A

0111 1100 B

0010 1100 C

~A 按位求反

1010 1110 A 0xAE

0101 0001

A ^ B 按位异或 相同为零,相异为一

1010 1110 A

0111 1100 B

1101 0010

A<<n 按位左移,低位补0

1010 1110 A<<3

0111 0000

A>>n 按位右移,高位补符号位

1010 1110 A>>3

1111 0101

 

练习2:输入一个整数,把它的4-7为设置为1010,其余位不变

num: 10 1000 1011 1101

11 1111 0000 1111 &

10 1000 0000 1101 把num4-7清零

00 0000 1010 0000 |

10 1000 1010 1101

 

 

 

函数:Function

一段具有某一项功能的代码集合,是C语言管理代码的最小单位

把代码封装成一个个函数,方便管理和调用代码

1、函数分类

(1)标准库函数

C语言标准委员会以函数形式提供的一些基础功能,都被封装在libc.so库中,并且分在了不同的文件中,需要使用时,只要把对应的头文件导入即可(例如stdio.h),然后通过具体的 函数名(参数) 即可完成调用

 #include<time.h>
 time_t time(time_t *tloc)

功能:获取自1970-1-1 0:0:0到调用时总共过了多少秒

用法:time_t sec=time(NULL)

 #include<stdlib.h>
 int rand(void)

功能:获取一个随机数

注意:目前任何编程语言和系统都没有真正的随机数,C编译器是把0~极大值范围的数值打乱后,存储到一块固定内存中,然后从里面取所谓的随机数

 void srand(unsigned int seed)

功能:种随机数种子,设置从随机数内存的某个位置开始取随机数,为了实现伪随机的效果,seed一般使用time(NULL)来设置

 int system(const char *command)

执行系统命令command

例如:system("clear");

练习3:获取10个范围[100,1000]之间的随机数,获取次数不能超过10次

rand()%901+100

[a,b] rand()%(b-a+1) +a

练习4:双色球规则:6个红球范围1-33 1个篮球范围1-16通过程序产生一组随机的中奖号码:红球不能重复

 

(2)系统函数(系统调用)

是操作系统以函数形式提供的一些功能接口

(3)第三方库函数

一些开源或收费的第三方代码

GitHub

md5

JSON 序列化和反序列化

glog 谷歌日志系统

XML 配置文件解析系统

 

(4)自定义函数

为了更好地管理代码,减少代码冗余

函数声明(函数原型):

目的是为了为了告诉其他的调用者(包括main函数),该函数的调用格式;

格式

返回值类型 函数名(形参类型1 形参名,形参类型2 形参名...);

1、C语言中函数名一般全部小写,可以用下划线分割

2、如果不需要参数时,建议写上void

3、C语言中不允许同名函数的出现

函数定义:

函数的具体实现

返回值类型 函数名(形参类型1 形参名,形参类型2 形参名...)

{

}

函数调用:

函数名(实参1,实参2...);

 

使用函数需要注意:

函数隐式声明:

在函数调用前没有任何该函数的声明或定义(定义在其他位置),那么会产生隐式声明

要避免产生隐式声明,就需要在函数调用前有函数声明或函数定义

注意:如果在函数调用前完成了函数的定义,那么函数声明可以省略

 

作业1:封装素数

作业2:输入两个日期(yyyy-mm-dd),计算两个日期间隔的天数

作业3:实现一个函数,判断一个整数是否是回文数,调用该函数显示出1亿~10亿之间的所有回文数

作业4:计算出100的阶乘

作业5:输入一个整数,显示出补码

标签:函数,记录,二进制,day07,补码,笔记,1111,八进制,原码
From: https://www.cnblogs.com/-xdj/p/17241362.html

相关文章

  • [嵌入式RTOS]记录一下因浮点数转为字符串导致精度损失所踩的坑
    1.起因:工作中对接平台需要将设备的GPS数据传给平台,但是平台采用的不是回调函数将数据直接作为参数返回而是格式化的字符串命令,所以需要将double类型的gps数据格式化输出到......
  • 记录:MDPI参考文献调整(Zotero)
    一参考文献格式字体大小常用格式三种:期刊,图书章节,会议,网址引用二选择zotero格式1.Stylerequest:MDPI(generalstyle)-ZoteroForums 打开链接,下拉,选择最新的......
  • react 官网学习笔记
    1.元素(html片段)和组件的关系(js函数)2.写组件的方式(function还是class)3.一个括号和两个括号的使用场景{}(获取值/js函数调用){{}}4.props和render都是做什......
  • 【笔记】electron + react + antd
    electronElectron是一个使用JavaScript、HTML和CSS构建桌面应用程序的框架。嵌入Chromium和Node.js到二进制的Electron允许您保持一个JavaScript代码代码库......
  • 王树森Transformer学习笔记
    目录TransformerAttention结构Self-Attention结构Multi-headSelf-AttentionBERT:BidirectionalEncoderRepresentationsfromTransformersSummaryReferenceTransformer......
  • 树链剖分学习笔记(1)
    两大DFS树链剖分是一个比较简单易懂的算法,其两个基础操作为两次dfs,第一次dfs求出每个节点的父节点(\(f_{i}\)),深度(\(dep_{i}\)),子树大小(\(size_{i}\)),重儿子(\(son_{i}\))。其......
  • 记录--前端加载超大图片(100M以上)实现秒开解决方案
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言前端加载超大图片时,一般可以采取以下措施实现加速:图片压缩:将图片进行压缩可以大幅减小图片的大小,......
  • 【Vue3官方教程】万字笔记 | 同步导学视频
    ......
  • 模电笔记-基础元器件无图
    模电笔记常见元器件电阻器电阻器提供一定的电阻限制电流的流动由导体材料制成,将导体材料绕制成螺旋状或折叠状,并将两端引出,形成一个固定阻值的器件。电阻器主要关心三......
  • Cadence入门笔记(三):PCB封装制作
    新建文件首先打开allegro,选择新建一个Packgesymbol随后调整一下图纸的单位和边框大小扩展(把调整Extends可以把原点居中放置,原生只在左下角)为了调用之前设计好的pad文......