合理、科学地设计指令格式计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系

计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看,指令中应包含多种信息。
但在有些指令中,由于部分信息可能无用,这将浪费指令所占的存储空间,并增加了访存次数,也许反而会影响速度。
因此,如何合理、科学地设计指令格式,使指令既能给出足够的信息,又使其长度尽可能地与机器的字长相匹配,以节省存储空间,缩短取指时间,提高机器的性能,这是指令格式设计中的一个重要问题。

package Com.TableText;

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    /**
     *
     * 功能描述:
     *
     */
    public class TableText_03 {

        public static Date date = null;

        public static DateFormat dateFormat = null;

        public static Calendar calendar = null;

        /**
         * 功能描述:格式化日期
         *
         * @param dateStr
         *            String 字符型日期
         * @param format
         *            String 格式
         * @return Date 日期
         */
        public static Date parseDate(String dateStr, String format) {
            try {
                dateFormat = new SimpleDateFormat(format);
                String dt = dateStr.replaceAll("-", "/");
                if ((!dt.equals("")) && (dt.length() < format.length())) {
                    dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]",
                            "0");
                }
                date = (Date) dateFormat.parse(dt);
            } catch (Exception e) {
            }
            return date;
        }

        /**
         * 功能描述:格式化日期
         *
         * @param dateStr
         *            String 字符型日期:YYYY-MM-DD 格式
         * @return Date
         */
        public static Date parseDate(String dateStr) {
            return parseDate(dateStr, "yyyy/MM/dd");
        }

        /**
         * 功能描述:格式化输出日期
         *
         * @param date
         *            Date 日期
         * @param format
         *            String 格式
         * @return 返回字符型日期
         */
        public static String format(Date date, String format) {
            String result = "";
            try {
                if (date != null) {
                    dateFormat = new SimpleDateFormat(format);
                    result = dateFormat.format(date);
                }
            } catch (Exception e) {
            }
            return result;
        }

        /**
         * 功能描述:
         *
         * @param date
         *            Date 日期
         * @return
         */
        public static String format(Date date) {
            return format(date, "yyyy/MM/dd");
        }

        /**
         * 功能描述:返回年份
         *
         * @param date
         *            Date 日期
         * @return 返回年份
         */
        public static int getYear(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.YEAR);
        }

        /**
         * 功能描述:返回月份
         *
         * @param date
         *            Date 日期
         * @return 返回月份
         */
        public static int getMonth(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MONTH) + 1;
        }

        /**
         * 功能描述:返回日份
         *
         * @param date
         *            Date 日期
         * @return 返回日份
         */
        public static int getDay(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.DAY_OF_MONTH);
        }

        /**
         * 功能描述:返回小时
         *
         * @param date
         *            日期
         * @return 返回小时
         */
        public static int getHour(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.HOUR_OF_DAY);
        }

        /**
         * 功能描述:返回分钟
         *
         * @param date
         *            日期
         * @return 返回分钟
         */
        public static int getMinute(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MINUTE);
        }

        /**
         * 返回秒钟
         *
         * @param date
         *            Date 日期
         * @return 返回秒钟
         */
        public static int getSecond(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.SECOND);
        }

        /**
         * 功能描述:返回毫秒
         *
         * @param date
         *            日期
         * @return 返回毫秒
         */
        public static long getMillis(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.getTimeInMillis();
        }

        /**
         * 功能描述:返回字符型日期
         *
         * @param date
         *            日期
         * @return 返回字符型日期 yyyy/MM/dd 格式
         */
        public static String getDate(Date date) {
            return format(date, "yyyy/MM/dd");
        }

        /**
         * 功能描述:返回字符型时间
         *
         * @param date
         *            Date 日期
         * @return 返回字符型时间 HH:mm:ss 格式
         */
        public static String getTime(Date date) {
            return format(date, "HH:mm:ss");
        }

        /**
         * 功能描述:返回字符型日期时间
         *
         * @param date
         *            Date 日期
         * @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
         */
        public static String getDateTime(Date date) {
            return format(date, "yyyy/MM/dd HH:mm:ss");
        }

        /**
         * 功能描述:日期相加
         *
         * @param date
         *            Date 日期
         * @param day
         *            int 天数
         * @return 返回相加后的日期
         */
        public static Date addDate(Date date, int day) {
            calendar = Calendar.getInstance();
            long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
            calendar.setTimeInMillis(millis);
            return calendar.getTime();
        }

        /**
         * 功能描述:日期相减
         *
         * @param date
         *            Date 日期
         * @param date1
         *            Date 日期
         * @return 返回相减后的日期
         */
        public static int diffDate(Date date, Date date1) {
            return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
        }

        /**
         * 功能描述:取得指定月份的第一天
         *
         * @param strdate
         *            String 字符型日期
         * @return String yyyy-MM-dd 格式
         */
        public static String getMonthBegin(String strdate) {
            date = parseDate(strdate);
            return format(date, "yyyy-MM") + "-01";
        }

        /**
         * 功能描述:取得指定月份的最后一天
         *
         * @param strdate
         *            String 字符型日期
         * @return String 日期字符串 yyyy-MM-dd格式
         */
        public static String getMonthEnd(String strdate) {
            date = parseDate(getMonthBegin(strdate));
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            return formatDate(calendar.getTime());
        }

        /**
         * 功能描述:常用的格式化日期
         *
         * @param date
         *            Date 日期
         * @return String 日期字符串 yyyy-MM-dd格式
         */
        public static String formatDate(Date date) {
            return formatDateByFormat(date, "yyyy-MM-dd");
        }

        /**
         * 功能描述:以指定的格式来格式化日期
         *
         * @param date
         *            Date 日期
         * @param format
         *            String 格式
         * @return String 日期字符串
         */
        public static String formatDateByFormat(Date date, String format) {
            String result = "";
            if (date != null) {
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(format);
                    result = sdf.format(date);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }

        public static void main(String[] args) {
            Date d = new Date();
            System.out.println(d.toString());
            System.out.println(formatDate(d).toString());
            System.out.println(getMonthBegin(formatDate(d).toString()));
            System.out.println(getMonthBegin("2008/07/19"));
            System.out.println(getMonthEnd("2008/07/19"));
            System.out.println(addDate(d,15).toString());
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机组成原理与汇编语言程序设计课后习题及解答 徐洁,俸远祯 电子工业出版社 第1章 习题一 1.什么是程序存储工作方式? 答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息 存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。 (2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息类型与范围及其广泛,几乎没有限制。 (5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成 了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 4.数字计算机的主要特点是什么? 1. (1) 能在程序控制下自动连续地工作; (2")运算速度快; (3) 运算精度高; (4) 具有很强的信息存储能力; (5) 通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标: (1)基本字长——参加一次运算的数的位数; (2)数据通路宽度——数据总线一次能并行传送的位数; (3)运算速度——可用 CPU的时钟频率与主频, 每秒平均执行指令数, 典型四则运算的 时间来表示。 (4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。 (6)配备的外围设备及其性能。 (7)系统软件配置。 7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。 系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操 作系统,C语言编译程序等,数据库管理系统。 8.对源程序的处理有哪两种基本方式? 对源程序的处理通常有两种处理方式:解释方式和编译方式。 第2章 习题二 1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码. 解: (AC.E)16 =(172.875)10 = (00010111001 4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。 解: (75.34)10 = (01001011.01010111)2 =(213.256)8 =(4B.57)16 5.将十进制数13/128转换为二进制数. 解: (13/128)10 =(1101/10000000)2 =(0.0001101)2 6.分别写出下列各二进制数的原码、补码,字长(含一位数符)为8位。 (1)0 (2)- 0 (3)0.1010 (4)- 0.1010 (5)1010 (6)-1010 解: 原码 补码 0 00000000 00000000 -0 10000000 00000000 0.1010 0.1010000 0.1010000 - 0.1010 1.1010000 1.0110000 1010 00001010 00001010 -1010 10001010 11110110 7.若X补=0.1010,则X原、真值等于什么? 解:X补=0.1010,则X原=0.1010,真值 X = 0.1010 8.若X补=1.1010,则X原、真值等于什么? 解:X补=1.1010,则X原=1.0110,真值 X = - 0.0110 9.某定点小数字长16位,含1位符号,原码表示,分别写出下列典型值的二进制代码与十 进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 1-2-15 (3)绝对值最小负数 1.000000000000001 -2-15 (4)绝对值最大负数 10.某定点小数字长16位,含1位符号,补码表示,分别写出下列典型值的二进制代码与 十进制真值。 (1)非0最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数 解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 (4)绝对值最大负数 1.000000000000000 -1 11.某浮点数字长16位,其中阶码6位,含1位符号位,补码表示,以2为底;尾数10位(含1位数 符),补码表示,规格化。分别写出下

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值