进制转换:
为什么要使用二进制、八进制、十六进制:
因为现在的CPU只能识别高低两种电流,只能对二进制数据进行计算
二进制数据虽然能够直接被CPU识别计算,但是不方便书写、记录,把二进制转换成八进制是为了方便记录在文档中
随着CPU的位数不断发展,由早期8位逐渐发展到现在64位,因此八进制也逐渐不能满足需求了,所以才出现了十六进制
十进制转二进制:
求余法:用2对数据求余,然后再对商继续求余,直到商为0结束,过程中产生的余数就是该数据的二进制(逆序)
n % 2 =0/1
商%2 =0/1
直到商为0
127 % 2 1
63 %2 1
31 %2 1
15 %2 1
7 %2 1
3 %2 1
1 %2 1
0
0111 1111
求权法:
数据-2^(n-1) 如果可以减,则第n位就是1,否则就是0,减了后继续往后减
1 2 4 8 16 32 64 128

    手算: 79 183 63 121练习1:输入一个正整数m,显示该数据的n(n>=2)进制,超过10的数用字母显示#include <stdio.h>
int main(int argc,const char* argv[])
{int m = 0, n = 0;scanf("%d%d",&m,&n);char bits[32] = {},cnt = 0;while(m){bits[cnt++] = m % n;m /= n;}for(int i=cnt-1; i>=0; i--){if(bits[i] < 10){printf("%hhd",bits[i]);  }else{printf("%c",'A'+bits[i]-10); }}}
二进制转十进制:每位的2^(n-1) 求和10110101    128+32+16+4+1=181注意:二进制转成八进制、十六进制是为了方便记录二进制数据二进制转八进制:三位二进制数据对应一个八进制二进制:1 001 010 110 011八进制  1  1    2   6   3    二进制转十六进制:由于计算机的发展八进制不能满足需要,因此引入十六进制四位二进制数据对应一个十六进制二进制:    1 0010 1011 0011十六进制:  1  2     B   3在C代码中,以0开头的是八进制数据,以0x开头的是十六进制数据%x  以十六进制显示数据%o  以八进制显示数据%#x  %#o 显示数据进制的前缀

原码、反码、补码:
原码:数据的二进制
反码:
正数的反码就是它的原码
负数的反码是它的原码除符号位外,其余按位求反
补码:
正数的补码就是它的原码
负数的补码:
1、转换成二进制原码
2、原码符号位不变,按位求反得到反码
3、反码+1 得到补码

        -12711111111 原码10000000 反码10000001 补码补码转换成数据:无符号补码直接转成十进制有符号最高位是0,说明是正数,也是直接转换成十进制有符号且最高位是1:1、补码-1得到反码2、反码符号位不变,按位求反得要原码3、原码转换成十进制数据1111 1111 补码     1111 1110 反码1000 0001 原码  -1

位运算符: & | ~ ^ << >>
A & B 按位相与
0110 1010 0x6A
1100 1011 0xCB
--------
0100 1010 0x4A

A | B   按位相或
0110 1010  0x6A
1100 1011  0xCB
--------
1110 1011  0xEB~A      按位求反
0110 1010  0x6A
1001 0101  0x95A ^ B   按位异或 相异为1,相同为0
0110 1010  0x6A
1100 1011  0xCB
---------
1010 0001  0xA1A << n  把A的补码向左移动n位,右边补0,左边的丢弃
0110 1010  0x6A << 4
1010 0000  0xA0 A >> n 把A的补码向右移动n位,左边补符号位,右边的丢弃
1100 0011 >>4 0xc3
1111 1100     0xfc练习2:输入一个整数A,把它的4~7位设置为1010,其它位保持不变先与再或 (A & ~(f<<4)) | 0xA0
     #include <stdio.h>int main(int argc,const char* argv[])
{int num =0;scanf("%d",&num);printf("%d\n",num & ~(0xf<<4) | 0xA0);
}
练习3:输入两个整数,把A的4~7位设置为B的3~6位,其它位保持不变(A & ~(f<<4))  | (B<<1 & 0xf0)A 0010 1000B 0110 01001100 1000
     #include <stdio.h>int main(int argc,const char* argv[])
{unsigned int a = 0, b = 0;scanf("%u%u",&a,&b);printf("%u\n",a & ~(0xf<<4) | (b<<1 & 0xf0));
}

函数:
一段具有某项功能的代码,是C语言中管理代码的最小单位
把代码封装成一个个函数,可以方便代码的管理和调用代码

函数的分类:标准库函数:C语言标准委员会为C语言以函数形式提供的一些基础的功能,封装在libc.so库中,使用时需要包含具体的头文件,函数名(参数) 就可以调用了int isalnum(int c);功能:当c转换成字符后是数字、字母字符时,返回非零值,否则返回0int isalpha(int c);功能:当c转换成字符后是字母字符时,返回非零值,否则返回0int isdigit(int c);功能:当c转换成字符后是数字字符时,返回非零值,否则返回0int islower(int c);功能:当c转换成字符后是小写字符时,返回非零值,否则返回0int isupper(int c);功能:当c转换成字符后是大写字符时,返回非零值,否则返回0int abs(int j); 功能:返回 j 的绝对值以下函数都被封装在libm.so库中 -lmdouble pow(double x, double y);功能:返回x的y次方double sqrt(double x);功能:返回x的平方根double floor(double x);功能:返回小于x的最大整数double ceil(double x);功能:返回大于x的最小整数double fabs(double x);功能:返回x的绝对值time_t time(time_t *t);功能:返回自1970年1月1日 00:00:00 到当前时间过了多少秒int system(const char *command);功能:调用系统命令 system("clear")int rand(void);功能:返回一个随机数void srand(unsigned int seed);功能:种随机种子练习4:获取10个 [100,1001) 随机数[a,b)rand() %(b-a)+a练习5:随机出一注双色球彩票号码6个红球:1-33 不能重复1个蓝球:1-16  \
     #include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(int argc,const char* argv[])
{srand(time(NULL));char red[6] = {},cnt = 0,i = 0;while(cnt < 6){int num = rand()%33+1;for(i=0; i<cnt; i++){if(num == red[i]){break;    }}if(i == cnt){red[cnt++] = num;   }}printf("red:");for(int i=0; i<6; i++){printf("%hhd ",red[i]);   }printf("\nblue:%d\n",rand()%16+1);
}
    系统函数:是操作系统以函数接口形式提供的一些功能,这些功能:内存管理、信号处理、文件IO、文件管理、进程管理、进程通信、线程管理、线程同步、网络通信注意:系统函数不是真正意义的C语言函数第三方库函数:一些开源或收费的第三方代码glog    日志记录相关MD5     密码验证 JSON    序列化和反序列化

自定义函数:
为了更好地管理代码、减少冗余把代码封装成函数

函数声明:函数声明目的是为了告诉其他代码,该函数的调用格式返回值类型  函数名(类型1 变量名1,类型2 变量名2,...);1、C语言中函数名一般全部小写,用下划线分隔2、如果不需要参数,建议写void,不要空着3、如果不需要返回值,也要写void隐式声明:当调用函数之前没有函数声明和定义,编译器会猜测函数的格式,参数列表按照调用时提供的参数(实参)来猜测,返回值猜测成int函数定义:返回值类型  函数名(类型1 变量名1,类型2 变量名2,...){函数体;return val;}返回值会放在调用的位置,可以立即显示,也可以用变量记录下来注意:如果函数定义在函数调用之前,可以省略函数声明函数调用:函数名(实参);注意:一般建议一个函数不要超过50行代码,如果超过可以考虑分成两个或多个函数一个函数负责一个功能,不要一个函数具有多个功能

进制转换 原码、反码、补码相关推荐

  1. java进制原码_Java 一一 进制、原码 反码 补码、移位操作

    进制 二进制 和 十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码 原码.反码.补码: 在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 ...

  2. Python_0b、0o、0x进制转换/原码、反码、补码

    一.进制转换 1.二进制0b.八进制0o和十六进制0x转换为十进制的方法: 设目标数字为n,相关进制为x,将数字n从右向左分解,分别乘以x的零次方.一次方等并相加. 2.十进制转换为二进制0b.八进制 ...

  3. python字符串反码输出_一阶段day3-进制、原码反码补码、位运算、字符串

    一.进制 计算机在存储数据的时候都是以二进制的形式去存储的 十进制.十六进制.八进制.二进制 1.十进制 123.4.65.34255765879808 基数:0.1.2.3.4.5.6.7.8.9: ...

  4. ☀️ 学会编程入门必备 C# 最基础知识介绍(二)——进制、原码反码、基本语法、数据类型、类型转换

    C#

  5. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

  6. day017:Java进制转换、原码反码补码、位运算、位移运算符

    一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...

  7. Java进制转换、原码反码补码

    一.负数的表示 最高位(最左侧的位)是用来表示正负的.0代表的整数,1代表负数.最高位称为符号位. 0b0000 1000 所表示的数字是 8 0b1000 1000 所表示的数字是 -8 二.原码反 ...

  8. 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)

    目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...

  9. 计算机进制、原码、反码、补码、移码相关知识

    计算机进制.原码.反码.补码相关知识 一:计算机中的数制 二:数制之间的转换 三:无符号数.有符号数 四:二进制原码.反码.补码.移码(增码) 4.1 原码 4.2 反码 4.3 补码 4.4 移码( ...

最新文章

  1. OpenCV捕获视频和摄像头
  2. 在eclipse中使用svn
  3. StackOverflow How to programmatically unplug replug an arbitrary USB device? 如何以编程方式拔出并重新插入任意USB设备
  4. tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
  5. prometheus 发送恢复 值_Prometheus基础知识介绍
  6. 苹果造车消息带动激光雷达股上涨 新能源整车概念下跌
  7. DeFi 借贷协议 NAOS Finance 完成种子轮融资
  8. matlab数据显示格式,如何使用MATLAB以图形格式记录和显示数据
  9. CSUOJ 1111 三家人
  10. java中ping多个ip_在Java中ping多个服务器
  11. 代码重构的方法和经验_实战篇:一个核心系统 3 万行代码的重构之旅
  12. android qq音乐 本地歌曲,如何将手机qq音乐本地歌曲导入到电脑
  13. 戴尔t30服务器装系统6,手把手为你演示win7系统戴尔t30装win7的具体办法
  14. android模拟器 权限管理,Android模拟器上未授予权限
  15. linux-2.6.32在mini2440开发板上移植(15)之移植看门狗驱动
  16. 【题解】展翅翱翔之时 (はばたきのとき)
  17. iOS中Keychain保存用户名和密码
  18. 性能测试瓶颈分析与系统调优(1)项目部署与测试环境工具安装
  19. 设计——免费PSD素材+设计网站+图标生成工具+自动标注
  20. 用php编写多项选择题_php 多选框问题(类似一道多选题)多选题的答案 以及正确答案都记录到数据库里了,读取修改问题...

热门文章

  1. 单价多少元一千克在c语言中怎么表示_小学三年级数学《克和千克的认识》说课稿范文...
  2. 赋能 打造应对不确定性的敏捷团队 pdf_“复”有诗书气自华之赋能 —— 打造应对不确定性的敏捷团队...
  3. internal server error是什么意思?
  4. 11.Unity ShaderGraph实例(LWRP+PBRMaster节点制作全息效果的精灵)
  5. 如何让安卓手机日历和Mac/iOS日历双向同步?
  6. 重启网卡提示Bringing up interface eth0:
  7. NDK OpenGL ES 3.0 开发(七):Transform Feedback
  8. APA规划和控制算法开发遇到的问题及解决方案
  9. 上传图片预览(服务器版)组件
  10. 抽象函数(Java)