1. 硬件基本认知 ; 进制转换 2019-10-27

1.1 计算机硬件基本认知

  • cpu: 中央处理器. 相当于人的大脑.运算中心,控制中心.
  • 内存: 临时存储数据. 优点:读取速度快。 缺点:容量小,造价高,断电即消失.
  • 硬盘: 长期存储数据. 优点:容量大,造价相对低,断电不消失。 缺点:读取速度慢.

    • 操作系统:统一管理计算机软硬件资源的程序

1.2 计算机文件大小单位

b = bit  位(比特)
B = Byte 字节
?
1Byte = 8 bit  一个字节等于8位  可以简写成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB

1.3 进制转换

  • 二进制:由2个数字组成,有0 和 1                       例: 0b101
  • 八进制:由8个数字组成,有0,1,2,3,4,5,6,7                 例: 0o127
  • 十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9              例: 250
  • 十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f    例:0xff 0Xff 0XFF

          字母大小写都可以,分别代表10,11,12,13,14,15

     
  • 1.3.1 二进制 转化成 十进制

例: 0b10100101  运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7= 1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
  • 1.3.2 八进制 转化成 十进制

例: 0o127运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
  • 1.3.3 十六进制 转化成 十进制

例: 0xff运算:15*16^0 + 15*16^1 = 255
  • 1.3.4 十进制 转化成 二进制

426 => 0b110101010  运算过程:   用426除以2,得出的结果再去不停地除以2,            直到除完最后的结果小于2停止,            在把每个阶段求得的余数从下到上依次拼接完毕即可
  • 1.3.5 十进制 转化成 八进制

426 => 0o652运算过程:   用426除以8,得出的结果再去不停地除以8,            直到除完最后的结果小于8停止,            在把每个阶段求得的余数从下到上依次拼接完毕即可
  • 1.3.6 十进制 转化成 十六进制

运算过程:   用426除以16,得出的结果再去不停地除以16,            直到除完最后的结果小于16停止,            在把每个阶段求得的余数从下到上依次拼接完毕即可
  • 1.3.7 二进制与八进制转换

二进制与八进制对应关系:八进制  二进制0       0001       0012       0103       0114       1005       1016       1107       111
例:1010100101八进制:从右向左 3位一隔开 不够三位用0补位 变成:001 010 100 1010o   1    2   4   5
  • 1.3.8 二进制与十六进制转换

十六进制  二进制0         00001         00012         00103         00114         01005         01016         01107         01118         10009         1001a         1010b         1011c         1100d         1101e         1110f         1111
例:1010100101十六进制:从右向左 4位一隔开 不够四位用0补位 变成:0010 1010 0101 0x2a5
  • 1.3.9   八进制 与 十六进制的转换

先转换成二进制 再去对应转换 比如:0x2a5 转换成 1010100101 再转8进制 0o1245

1.4  原码,反码,补码

1.原码 或 补码 都是用来表达二进制数据    

原码: 用来转换对应进制

反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(首位符号位不变)

补码: 用来做数据的存储和运算. 补码的提出用于表达一个数的正负(实现减法)    
?
  计算机的所有数据在底层都是以二进制的[补码]形式存储
  实际上人们看到的数字是[原码]转化来的
  [原码] 和 [补码] 可以通过计算互相转化
?

2.整体顺序:补码 -> 原码 -> 最后人们看到的数

进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出?

3.运算规律:
原码:正数高位补0 负数高位补1  
  数字1   00000000 1 正数高位第一位补0
  数字-1 10000000 1 负数高位第一位补1
?
计算机默认只会做加法,实现减法用负号: 5+(-3) => 5-3
乘法除法:是通过左移和右移 << >> 来实现
?

4.原码 与 反码之间的转换
(原码 反码 补码之间的转换 , 符号位不要动)
正数: 原码 = 反码 = 补码
负数: 原码 = 补码取反加1   给补码求原码
负数: 补码 = 原码取反加1   给原码求补码

原文地址:https://www.cnblogs.com/Liam12138/p/11749205.html

时间: 2024-08-26 19:31:50

1. 硬件基本认知 ; 进制转换 2019-10-27的相关文章

汇编语言程序:16进制转换成10进制(三种方法)

1 ;天水浪客(Gouki Jiang) , 16进制to10进制例题 2007.5.18 2 STACK SEGMENT PARA STACK 3 S_AREA DW 100H DUP(?) 4 S_TOP EQU $-S_AREA 5 STACK ENDS 6 7 DATA SEGMENT PARA 8 VALUE DW 0EB9AH ;060314 9 RESULT DB 5 DUP(?),'$' 10 DATA ENDS 11 12 CODE SEGMENT PARA 13 ASSUME

九度oj 题目1080:进制转换

题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题初看起来另我头疼,考虑不难但是很麻烦 一开始想的比较绕,准备先把任意进制转换成10进制,再转化成n进制,于是写出了下面的代码 1 #include

SQL Server 进制转换函数

一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下面的映射表“: (Figure1:效果图) 二.十进制转换为十六进制 在网上有很多资料关于使用SQL语句把十进制转换为十六进制的资料,比如: --方式1 SELECT CONVERT(VARBINARY(50), 23785) 执行返回值为0x00005CE9,但是需要注意的是,这本应该返回二进制的

shell进制转换工具

其它进制转换成10进制 ((num=base#digit)) echo $num base8->base10 ((num=8#123)) echo $num 83 base16->base10 ((num=16#ff)) echo $num 255 10进制转换成其它进制 echo "obase=base;num" | bc base10->base2 echo "obase=2;255" | bc 11111111 base10-base8 ec

java中内置的进制转换的方法---小笔记

10进制转换成16进制:Integer.toHexString(int i) 10进制转换成8进制:Integer.toOctalString(int i) 10进制转换成2进制:Integer.toBinaryString(int i) 16进制转换成10进制:Integer.valueOf("",16).toString() 8进制转换成10进制:Integer.valueOf("",8).toString() 2进制转换成10进制:Integer.valueO

常用进制转换

原文:常用进制转换 最近的工作中,需要接触到一些硬件设备,处理这些设备的通讯,因此需要进行一些进制的转换.      其实,二进制.十六进制这些基本的知识,在我们刚学编程的时候,基础课应该已经讲过的了.但是,包括我自己在内,当时也仅仅是知道一般的换算规则,但是具体怎么应用,在c#中又是如何表示,也是近期才有比较深的体会.      具体的知识,各位就自己查看相关的基础知识了,这里我只给出自己在工作中的体会和实际的类库.      首先,先解释下C#的类型.一般,我们常用的有 byte.short

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

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

Java基础笔记(3) 进制与进制转换

---恢复内容开始--- 进制 在一般生活中,我们一直在应用的十进制,就是逢十进一,而今天我们要接触的是,计算机编程常用的进制!首先我们要知道,计算机内部运算采用的是二进制,也就是逢二进制! 1.什么是二进制? 就是只有0 和 1  每当遇到值为2 就向前进一位. 2.为什么计算机内部是二进制? 这就要从硬件说起,计算机是如何储存数据的,要知道我们网络传输,就是你要和别人一起聊天,你们隔着很远,到底是怎样才能让他收到你的聊天内容? 有一根网线还能说过去,毕竟网线链接终端我们也不知道连到哪,保不齐

C# 进制转换 (没有数值的长度限制)

曾经在大学时做过一个c的进制转换算法,那时由于技术的局限性,数值的大小受到限制(系统数据类型长度限制),多年以后,自己那台学习机陈旧后感觉要报废了,整理了一下里面的东西,偶尔在一个角落里发现了这个转换算法,觉得它还有改进的地方,可以让它功能更强大(当时想过要转换超长数值,但受系统数据类型的局限性.个人开发语言深度的认知.以及视界观的狭隘,没能想到可以解决计算超长数据的有效的方法),这里我会将多年前大学里写的那段,和我修改后的粘贴出来,以飨读者. 传入参数: string x 是超大数的字符串格式