【C语言疯狂讲义】(七)C语言进制转换

1、计算机中的进制

2进制:逢二进1      0  1

8进制:逢八进1      0  1   2  3  4  5  6  7

10进制:逢十进1 
默认的进制  0 - 9

16进制:逢十六进1   0 - 9  A B C D E F      (内存的地址格式)

2、进制的转换问题

三个要素:

数位(0-7)、

基数(每一位能取值的个数)、

位权(数码*基数^数位)、    101 = 1*2^0+0*2^1+1*2^2

数码(每一位设置)

转换:有得时候转换为人能识别的数制,要操作计算机写计算机能够识别的语言(二进制)

10 -> 2  :  除2取余法,把10进制数除以2,然后取得余数的序列,再倒序

2  -> 10 :  所有位的位权相加 101 = 1*2^0+0*2^1+1*2^2

2 --> 16 :  4合1法,
整数部分从右向左 4位结合成一位,小数部分从左向右4位结合1位,不足部分补0

16 -->2  :  1拆4法, 16进制的1位拆成二进制的4位

2 --> 8  : 3合1

8 --> 2  : 1拆3

8 --> 10 : 8--> 2 --> 10

16 --> 10: 16 -->2 -->10

3、原码、反码和补码

1)机器码、真值

一个数的二进制的表示 
机器码

把一个数的二进制转换为10进值得值 
真值

2)计算数据的存储

存储的时数的补码

数是有正负性

正数:最高位
用0表示符号位

负数:最高位
用1表示符号位

3)原码、反码、补码:

正数:就是其二进制表示         +1 00000001

负数:二进制的最高位是1        -1 10000001

反码:

正数:就是其二进制表示         +1 00000001

负数:符号位不变,其他位逐位取反 -1 11111110

补码:

正数:就是其二进制表示         +1 00000001

负数:反码+1                 -1 11111111

注意:补码的真值不等于原码的真值的

4、为什么要使用补码?

主要是位了优化计算机中的减法

5、补码的深入讲解

1-1   =  1+(-1)

6、位运算符

二进制数码之间的运算

6个符号

& 按位与:逐位运算,有0则为0,同1则为1

| 按位或:有1为1

^ 按位异或:相同为0,不同为1

~ 按位的取反:0变1,1变0

>> 按位右移:把一个数的所有的二进制位全部向右移动指定位数 10>>2;

注意:移出的位舍弃,高位补符号位,可能让一个数为0

<< 按位左移

把一个数的所有的二进制位全部向左移动指定位数

注意:移出的位舍弃,低位补0,可能会改变一个数的正负性

11&2

1011

&  0010

--------------

0010

技巧:

任何数和1按位&操作,得到这个数的最低位

偶数的最低位 0

奇数的最低位 1

7、变量在内存中存储的细节

内存分配给变量的存储空间是从高到低

一个变量低位低地址

高位存放高地址

8、char类型

char

char常量  ‘a‘,‘b‘,

以int型进行存储,占4个字节

char变量

以单个字节存储

取出ascii码 
转换为2进制  
放到一个字节

%c 取出一个字符

%d 取出整数值

时间: 2024-10-11 05:07:19

【C语言疯狂讲义】(七)C语言进制转换的相关文章

用递归求解进制转换

递归算法虽然容易理解,但我们可能时常忘记使用它.我就只记得算法课上老师讲过的场景:斐波那契数列,汉诺塔这两个例子.偶尔看到b站上一个C语言视频里面用递归求解进制转换的例子,突然之间恍然大悟,想着记录下来. 下面是一个求解二进制的程序代码 #include<iostream> using namespace std; void convert(int n) { if ((n / 2) != 0) { convert(n / 2); cout << n % 2; } else cout

一起talk C栗子吧(第七回:C语言实例--进制转换)

各位看官们.大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是生成随机数的样例.这一回咱们说的样例是:进制转换.说到进制预计大家 都不陌生.计算机中的进制有二进制.八进制,十进制,十六进制. 今天咱们将要说的是十进制怎样转换成二进制.八进制和十六进制.在这里我把敲代码的步骤和算法思路 写出来供大家參考. 1.获取用户想要转换的数值和想到转换的进制.这里要检查输入是否正确.这是程序健壮性的体现

2.4.2-Java语言基础(进制转换)

二进制转成十进制 八进制.十六进制转成十进制 二进制转成八进制.十六进制 八进制.十六进制转成二进制 八进制转成十六进制 十六进制转成八进制 十进制转成二进制.八进制.十六进制 ?  负数的二进制表现形式 ?  对应的正数二进制取反加1 2.4.2-Java语言基础(进制转换)

06 python语言中的进制转换

python语言中的进制转换 1.python语言中支持哪些进制,以及这些进制的表示法2.如何在不同的进制之间进行转换 //py 语言支持4种进制 十进制 0-9 // 123 默认就是 十进制 十六进制 0-9 A-F //0x 0xFF12E 0x 开头的就是 十六进制二进制 //0b 0b11010101 //这里用0B 也是可以的但是业内都是用小写的0b表示 表示二进制 八进制 //0o 0o4324 // 0o 开头的就是 八进制 除了十进制外,其他进制数字前面都是0 转换 主要是十进

c语言之进制转换(栈实现)

从上两篇博客中我们可以知道,栈具有后进先出的特性,而进制转换的打印输出刚好与计算过程相反,满足栈这后进先出的特性, 所以可以用栈很快的实现进制转换,下面是用栈实现进制转换的c函数 void conversion (SqStack *pstack,unsigned int N, const unsigned int d){ if( pstack == NULL)//当传入参数为指针,必须判空 exit(-1); int mod ;//保存mod = N %d while( N != 0){ mod

C语言基础总结 ( 一 )----------函数和进制的总结

1. 函数分类 1) 无参无返回值函数一般用于执行某些固定的功能.(打印logo) 2) 无参有返回值函数一般用于获取某些数据或结果.(获取数字) 3) 有参无返回值函数一般利用参数完成某些特定功能.(根据传入数字生成星星矩阵) 实参与形参的传递过程,两个参数互不相干. 4) 有参有返回值函数一般用于处理数据,得到处理结果.(数据的转换.计算和统计整合数据) 2. 递归函数 1)递归需要可以跳出才有意义 2)主调函数就是被调函数 案例:  1. 等差数列     1 3 5 7 9... 2.

c语言将字符串转成int,将int转成字符串。附带任意进制转换函数

在网上看到各种将字符串转成int,和int转成字符串的方法.我自己比较喜欢用的方法是下面的,记住模板就行,最开始我也老是记不住,找到规律,多用几遍就好了. 1.将字符串转成int char s[20] = "123456";   // 注如果此处不是数字字符串类型,如下面的字符串  12abc -->  12        ab12 --> 0 int a = 0; sscanf(s,"%d",&a);   // a = 123456   就得到

疯狂的进制转换II

疯狂的进制转换II Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 309(196 users) Total Accepted: 219(193 users) Rating: Special Judge: No Description 进制转换是一个疯狂的问题,你需要将一个整数转化为32位的二进制形式. Input 本题有多组测试数据,对于每组数据输入一个正整数number,number不超过32位有符号整数的最大值,输入到文件结束

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

Linux命令之bc - 浮点计算器、进制转换

用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下.手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断.循环等,可以说是很强大的,但是我在实际中还没有找 到需要这个用途的场合 .另外一个用途就是用来进行进制转换. 常用参数 一般情况下,我们使用不带任何参数的bc命令. bc 如果需要bc不输出提