java u003_我在B站学编程 DAY-003 JAVA基础概念和语法

八进制:0-7组成

例子:

八卦

指令在机器中以机器码格式输出,机器码一次原始输出位数是八的倍数,即以字节长度为最小单位输出。

十六进制:0-9,abcde...组成,0X开头

十六进制可以更紧凑地表示二进制,让人们不用直接面对冗长的01机器码

汇编里计算 96÷4。

用 div 指令是这样:

mov ax, 60h

mov cl, 4h

div ax, cl

执行后 al=0x18 表示商,ah=0x0 表示余数。

但是我看应该不会有人愿意这么做。因为 div 指令要求被除数必须放在 ax 中,不能放在别的地方。如果要执行这个除法运算的不是 ax,而是别的寄存器,或者一个内存单元,就必须先把它的值送到 ax 中,然后才能用上面的指令去运算。更要命的是,如果这个时候 ax 中还有别的有用的数据,那就更麻烦了,还得先 push 临时储存,算完以后再 pop 回来。

所以机智的做法应该是下面这样:

mov ax, 60h

shr ax, 1h

shr ax, 1h

这里的 ax 可以换成 bx 等别的寄存器。shr 是逻辑右移,每执行一次相当于除以 2。

96 写成二进制是 01100000,右移一位得到 0110000,也就是十六进制的 0x30,十进制是 48。

再右移一位,变成 011000,十六进制是 0x18,十进制是 24。

如果右移四位,得到的则是 0110,等于 0x6,刚好相当于除以 16。

那么如果改成 96÷32,就要执行五次“shr ax, 1h”。为了避免这个麻烦,可以写成下面这样:

mov ax, 60h

mov cl, 5h

shr ax, cl

对于除数为 2、4、8、16……的除法运算,用 shr 指令比用 div 指令快得多,也方便得多。

在编程中 and、or、not、xor、shl、shr 等是一类非常有用的运算,它们都是为二进制而生的,而引入十六进制的目的之一就是为了便于阅读二进制,因此相对于十进制来说,十六进制拥有无法取代的优势。当然并不是说一定不能用十进制去表示,理论上确实是可行的,只是由于会带来太多麻烦,人们不愿意这样做罢了。

因此,谁要是喜欢在计算机界里搞十进制,谁才是真正的反人类。

二进制原理:

一字节=八个比特位

1byte=8bit

1kb=1024b

1m=1024k

1g=1024m

1t=1024G

八进制转十进制:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7 64安装工商网银U盾软件

采用分步安装即可: 下载安装安全控件安装证书驱动程序

[大数据可视化]-saiku的源码包Bulid常见问题和jar包

最近在做kylinmondriansaiku的二次开发的时候,Bulid saiku的源码出现了很多问题,基本上一大部分问题jar找不到问题,很多jar国内网站都找不到。这时候只有手动下载然后注册到MAVEN本地仓库中去。 我把这些包放上来希望对给需要的朋友一些帮助。…

java 计算工具类_java精确计算工具类

importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.math.BigDecimal;importjava.text.DecimalFormat;importorg.springframework.stereotype.Component;/*** 工具类 - 运算*/Componentpublic classArithUtils {//默认除法运算精度private static final int …

win7 64 安装sp1补丁提示“客户端没有所需的特权”

右击以管理员身份运行,再就是在控制面板,用户账户和家庭安全,用户账户,更改用户账户控制设置,调到最低。 重新启动电脑即可运行。

C# 全角半角相互转换

/// <summary>/// 半角转全角(SBC case)/// 全角空格为12288&#xff0c;半角空格为32/// 其他字符半角(33-126)与全角(65281-65374)的对应关系是&#xff1a;均相差65248/// </summary>/// <param name"input">任意字符串</param>/// <r…

java进程和线程_Java™ 教程(进程和线程)

并发计算机用户想当然地认为他们的系统一次可以做不止一件事&#xff0c;他们设想他们可以继续在文字处理器中工作&#xff0c;而其他应用程序则下载文件、管理打印队列和流音频&#xff0c;即使是单个应用程序通常也希望一次完成多个任务。例如&#xff0c;流式音频应用程序必…

C++ 中关于optional 使用过程中遇到的问题

头文件&#xff1a;#include <boost/optional.hpp> using namespace boost; optional很像一个仅能存放一个元素的容器&#xff0c;它实现了"未初始化"的概念&#xff1a;如果元素未初始化&#xff0c;那么容器就是空的&#xff0c;否则&#xff0c;容器内就是有…

java config 类_Spring ----JavaConfig类代替XML配置Bean

1.使用JavaConfig实现Bean对象创建&#xff1a;通过Spring ApplicationContext的另一个容器AnnotationConfigurationApplicationContext的实现类ApplicationContext ac  new AnnotationConfigurationApplicationContext(“包名|配置类|bean工厂&#xff1f;”) 依赖工厂&a…

SQLServer 生成当前日期备份

DECLARE DataBase NVARCHAR(64)DECLARE strDate NVARCHAR(64)DECLARE strPath NVARCHAR(512)--备份采集配置数据库use TestDBSET DataBaseTestDBset strPathE:\数据库备份\set strDate convert(NVARCHAR(19),getdate(),120)set strDate REPLACE(strDate, : , )set strDate R…

白话经典算法系列之一 冒泡排序的三种实现

http://blog.csdn.net/morewindows/article/details/6657829 冒泡排序是非常容易理解和实现&#xff0c;&#xff0c;以从小到大排序举例&#xff1a; 设数组长度为N。 1&#xff0e;比较相邻的前后二个数据&#xff0c;如果前面数据大于后面的数据&#xff0c;就将二个数据交…

java 读取csv_Java读取CSV的常用方法 | 学步园

在项目开发中&#xff0c;我们经常需要读取csv的内容的操作。读取的逻辑并不复杂。主要是对有换行的&#xff0c;逗号&#xff0c;引号的处理恰当的话就没问题了。下面作为memo&#xff0c;把在项目中的读取方法拷贝了过来。有了下面的这些方法&#xff0c;在CSV的读取和输出的…

判断两颗树是否相同

tag: 二叉树 package com.zhaochao.tree;import java.util.Stack;/*** Created by zhaochao on 17/1/24.* 两颗树相等&#xff0c;意味着 对应节点的值相等&#xff0c;且具备相同的左右子树*/ public class JudgeSameTree {//recursion public boolean isSame(TreeNode rootA,…

C# XML格式化显示

/// <summary>/// XML格式化为文本显示/// </summary>/// <param name"str"></param>/// <returns></returns>public static string ShowXml(string str){MemoryStream mstream new MemoryStream();XmlTextWriter writer new …

C# CKEditor、CKFinder集成使用

1.裁剪&#xff08;ckeditor在\_Samples\ckeditor中&#xff09;2.添加引用&#xff1a;CKEditor.NET.dll、CKFinder.dll3.配置CKEditor&#xff1a;ckeditor/config.jsCKEDITOR.editorConfig function (config) {config.skin office2003;};4.使用CKEditor&#xff1a;<% …