• 01_计算机基础


    二进制和十进制

    二进制和十进制介绍

    二进制只包括0和1,十进制包括0~9


    二进制和十进制的转换

    • 十进制转二进制:使用除以二获取余数
    • 二进制转十进制:使用8421编码

    例子

    1	0	0	1	0	1	1	# 二进制
    75	# 十进制
    # ----------转换方式----------
    

    二进制转十进制

    每一个二进制位置上都是2的n次方,比如 第0位20第1位21第2位22,......,所以

    1		0		0		1		0		1		1
    
    2^6		2^5		2^4		2^3		2^2		2^1		2^0
    
    64		32	 	16		8		4		2		1			
    
    1x64 + 0x32 + 0x16 + 1x8 + 0x4 + 1x2 + 1x1 = 75
    

    十进制转二进制


    进制

    介绍

    明白了二进制和十进制之后,在理解别的进制就简单了

    我们知道,二进制是逢二进一,十进制是逢十进一。

    那么八进制就是逢八进一,十六进制就是逢十六进一,.....

    常用的进制也就是二进制,八进制,十进制,十六进制

    八进制在最后面加O表示(因为英文为Octal),十六进制在后面加H或者下标16或者在前面使用0x表示

    十六进制

    要特别介绍一下十六进制

    因为十六进制是在十的基础上加入了字母A–>F组成 , 分别代表0–>15


    各种进制相互转换

    各种进制转换为十进制

    各种进制转换为十进制和二进制转换为十进制差不多,比如8进制转换为十进制,让72转为十进制

    7 2

    81 80

    7x8+2x1 = 58


    十进制转其他进制

    • 对于整数部分:除N取余,逆向排列
    • 对于小数部分:乘N取整,正向排列

    其实也和十进制转换二进制差不多,都是使用除法和乘法,但是细节上有些不同,比如74.45转换为八进制

    整数部分

    小数部分

    第一次的结果是3

    第二次使用第一次剩下的小数计算,就是用0.6去计算,结果是4

    那么十进制的结果就是0.34xxxx,这里可以取两位有效数字,那就是0.346-->0.35-->0.4

    结果

    112.40


    位运算

    介绍

    位运算就是直接对二进制进行操作

    规则

    含义 Java
    a & b
    a | b
    异或 a ^ b
    取反 ~a
    左移 a << b
    带符号右移 a >> b
    无符号右移 a >>> b

    注意,计算机中的位运算是根据补码进行的计算

    与运算规则

    相同位的两个数字均为1则结果为1

    0	0	1	0	1	# a
    1	1	1	0	0	# b
    ---------------------
    0	0	1	0	0	# 结果
    

    或运算规则

    相同位的两个数有一个为1则结果为1

    0	0	1	0	1	# a
    1	1	1	0	0	# b
    ---------------------
    1	1	1	0	1	# 结果
    

    顺便提一嘴,假如数字n为2的幂次方数,那么 n % length == n & (length - 1)

    异或运算

    相同为0,不同为1

    0	0	1	0	1
    1	1	1	0	0
    ---------------------
    1	1	0	0	1
    

    取反运算

    除了负数符号位,0和1全部取反

    0	0	1	0	1
    ---------------------
    1	1	0	1	0
    

    左移

    丢弃最高位,低位用0补齐

    左移一位相当于乘2,但一般认为左移比乘法快,因为这是直接针对底层的操作

    1	1	0	0	1	0	0	# 左移2
    ---------------------------
    0	0	1	0	0	0	0	0	0
    

    比如这里,一开始的结果是100

    左移之后变为了400

    如果移到了符号位,那么数值正负将会改变

    右移

    丢弃最低位,符号位不变

    右移一位相当于除以2,但是一般认为右移比乘法快,因为这是直接针对底层的操作

    0	0	1	0	0	0	0	0	0	# 右移2
    ---------------------------
    0	0	1	0	0	0	0
    

    相应的符号位不会改变

    负数则在当最高位的1移到右边一位时,左边最高位再次补1

    整数则在当最高位的0移到右边一位时,左边最高位再次补0

    无符号右移

    a >>> b就是无符号右移,忽略符号位,空位以0补齐

    0	0	1	0	0	0	0	0	0	# 右移2
    ---------------------------
    0	0	1	0	0	0	0
    

    乍一看和右移没什么区别,但是区别是

    不会保留符号位,用0补最高位

    无符号右移对正数没有意义


    原码 反码 补码

    原码

    原码就是原本的二进制

    反码

    反码就是原码除了符号位取反

    补码

    • 正数补码与原码相同

    • 负数补码为反码加一


    字节

    8个bit(二进制)为一个字节

    字节是计算机最小的存储单元


    Windows下常用DOS命令

    命令 操作符
    盘符切换 盘符:
    查看当前文件夹 dir
    进入文件夹 cd 文件夹
    退出到上一级 cd ..
    退出到磁盘根目录 cd
    清屏 cls
  • 相关阅读:
    【转】c语言中的#号和##号的作用
    stm32 HAL库编程驱动控制文件<stm32f1xx_hal_conf.h>的使能方法
    rt-thread是如何做到通过menuconfig配置将相应文件加入工程和从工程中除去
    rt-thread 学习路线
    stm32使用rt-thread在文件《stm32f1xx_hal.h》中头文件包含顺序引出的错误
    rt-thread之stm32系列BSP制作方法
    使用rt-thread中BSP-stm32 ENV构建工具报错
    rt-thread中动态内存分配之小内存管理模块方法的一点理解
    内存对齐
    rt-thread中线程内置定时器的作用 ---
  • 原文地址:https://www.cnblogs.com/howling/p/14230505.html
Copyright © 2020-2023  润新知