【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变量
【C语言疯狂讲义】(七)C语言进制转换的更多相关文章
- 一起talk C栗子吧(第七回:C语言实例--进制转换)
各位看官们.大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是生成随机数的样例.这一回咱们说的 ...
- C语言关于进制转换,补码, 整数的位操作
菜单导航: 1.二进制.八进制.十进制.十六进制的相互转换 2.原码.反码.补码 3.举例证明整数在计算机内是以补码的形式存在(以负数为例) 4.整数的位操作:按位且&.或|.异或^.取反~ ...
- C语言实现进制转换——超图面试题
递归:递归的原理,就是自己调用自己本身.存在一个顺序的问题,如果在递归前的是顺序执行,递归后的是逆序执行,如下: void gogogo() { //递归之前 gogogo(); //递归之后 } 递 ...
- C语言拼接字符串以及进制转换
#include<stdio.h> #include<stdlib.h> #include<string.h> char *join1(char *, char*) ...
- C语言 进制转换
这个程序仅仅是由十进制转换为其他进制的过程,其转换的规则如下图所示. 我使用的思路:首先在除基的过程中用一个数组保存余数,然后在输出进制转换结果的时候倒序输出,并且在输出前判断余数是否大于10,如果大 ...
- C语言基础——进制转换 / 数据表示
第一部分:进制转换 二进制:由0~1构成,逢2进1 八进制:由0~7构成,逢8进1 十六进制:由0~9.A~F构成,逢16进1 两个基本概念 基数:n进制基数为n 123.4 = 1*10^2 + 2 ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- Java基础(进制转换-)
进制概述: 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数). 对于任何一种进制---X ...
- java se系列(二) 关键字、注释、常量、进制转换、变量、数据类型转换、运算符
1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2 常见的关键字 备注 ...
- Knowledge Point 20180305 机器数转换与进制转换
机器数(这里的机器数说的就是数值在计算机中的存储形式,相关可以了解数据在计算机中的表示)之间的转换往往是通过原码来实现的,下面我们结合进制来来一下: 进制也就是进位制,是人们规定的一种进位方法. 对于 ...
随机推荐
- how to remove an element in lxml
import lxml.etree as et xml=""" <groceries> <fruit state="rotten"& ...
- vs附加到进程报MSVSMON.EXE未在远程计算机启动错误
拿到同事电脑发现居然附加不上本地进程,网上那些关防火墙更改目标平台之类的方法都没用.最后发现是后台运行着一个叫 ss_privoxy.exe 的代理软件搞的,禁用所有非系统服务重启后删掉以绝后患.
- classNotFound修复
万恶的这个bug,也是经常遇见,每一次都是在反复检查完代码之后并没有发现错误,然后开始上网百度,发现也并没有一个准确的解答.在此给出我的个人的修复bug的过程. 1.首先我是遇到了找不到entity中 ...
- 对象存储 - Swift 原理 及 Swift+keystone+dashboard 架构搭建
1. 原理介绍 Swift 架构.原理及功能: http://www.cnblogs.com/sammyliu/p/4955241.html 总结的很详细也很全面,受益匪浅,感谢分享. 2. keys ...
- js面向对象编程(三)非构造函数的继承(转载)
Javascript面向对象编程(三):非构造函数的继承 今天是最后一个部分,介绍不使用构造函数实现"继承". 一.什么是"非构造函数"的继承? 比如,现在有一 ...
- KVM(三)I/O 全虚拟化和准虚拟化
在 QEMU/KVM 中,客户机可以使用的设备大致可分为三类: 1. 模拟设备:完全由 QEMU 纯软件模拟的设备. 2. Virtio 设备:实现 VIRTIO API 的半虚拟化设备. 3. PC ...
- (十六)MySQL集群galera实现
(1)环境介绍 galera官网:http://galeracluster.com/downloads/ # cat /etc/redhat-release CentOS Linux release ...
- HDU 多校1.10
- oracle tablespace usage status
select a.tablespace_name, a.bytes / 1024 / 1024 "Sum MB", (a.bytes - b.bytes) / 1024 / 102 ...
- java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getResourceLoader()Lorg/springframework/core/io/ResourceLoader
问题原因 在整合spring跟struts2是使用Maven,用到struts2-spring-plugin.jar,但是maven不但但加载了这个jar文件还有spring-beans:3.0.5. ...