精华内容
下载资源
问答
  • 扩展数字的位表示和截断数字

    千次阅读 2016-08-27 11:07:18
    一、扩展一个数字的位表示一种常见的运算是在不同字长的整数之间转换,例如,从一个较小的数据类型转换到一个较大的数据类型。将一个无符号数转换为一个更大的数据类型,只需要简单地在表示的开头添加 0,这种运算...

    、扩展一个数字的位表示

    一种常见的运算是在不同字长的整数之间转换,例如,从一个较小的数据类型转换到一个较大的数据类型。

    将一个无符号数转换为一个更大的数据类型,只需要简单地在表示的开头添加 0,这种运算称为零扩展

    将一个补码数字转换为更大的数据类型要执行符合扩展,规则是在表示中添加最高有效位的值的副本。如果原始的位表示为这里写图片描述,那么扩展后的位表示为这里写图片描述

    下面证明符号扩展是正确的,即证明下式:

    这里写图片描述

    表达式的左边增加了k位这里写图片描述的副本。采用的是数学归纳法,即证明符号扩展一位保持数值不变,那符号扩展任何位都保持这种属性。

    这里写图片描述

    根据定义展开,

    这里写图片描述

    、截断数字
    例如,在一台32位机上,将 int类型强制转换为short时,就会将32位的int截断为16位的,将一个w位的数这里写图片描述截断为一个k位数字时,将会丢弃高w-k位,得到一个位向量这里写图片描述,截断一个数字可能会改变一个它的值,这是溢出的一种形式。

    对于一个无符号数 x,截断它到k位,相当于计算这里写图片描述,通过下式计算得到:
    这里写图片描述

    对于一个补码数字 x, 相似的推理可知道,

    这里写图片描述,也就是,这里写图片描述 能都被位级表示为 这里写图片描述,不过,一般而言,这个被截断的数字被视为有符号的,这将得到数值 这里写图片描述

    这里写图片描述

    参考:深入理解计算机系统(第二版)

    展开全文
  • 输入个中文字符串,使用中文表示数字形式。如百,千万,四千二百万零三十。 输出对应的数字,如100,1000000,42000030。思路: 遇到这个问题开始觉得挺简单的,用个字符串和个数组对应下标就...

    问题描述:
    输入一个中文字符串,使用中文表示的数字形式。如一百,一千万,四千二百万零三十。
    输出对应的数字,如100,1000000,42000030。

    思路:
    遇到这个问题一开始觉得挺简单的,用一个字符串和一个数组对应下标就找到数字了,然后一步步累加。
    后来发现不太简单,还要考虑如三百二十万这种情况,就是最后一位比前面的数位大,还要乘上去。
    在csdn上看到一个很厉害的思路,用栈来实现算法,N表示当前的数,如果数字则直接入栈;如果是百千万亿这种单位,就把栈中比N小的数弹出累加之后的和,乘上N再入栈。
    最后把栈中元素累加就得出结果了。
    自己实现了一下,代码:

    package problem;
    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class Test {
    
        public static void main(String[] args) {
            String aval = "零一二三四五六七八九";
            String bval = "十百千万亿";
            int[] bnum = {10, 100, 1000, 10000, 100000000};
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                long num = 0;
                String str = sc.next();
                char[] arr = str.toCharArray();
                int len = arr.length;
                Stack<Integer> stack = new Stack<Integer>();
                for (int i = 0; i < len; i++) {
                    char s = arr[i];
                    //跳过零
                    if(s == '零')continue;
                    //用下标找到对应数字
                    int index = bval.indexOf(s);
                    //如果不在bval中,即当前字符为数字,直接入栈
                    if(index == -1){
                        stack.push(aval.indexOf(s));
                    }else{ //当前字符为单位。
                        int tempsum = 0;
                        int val = bnum[index];
                        //如果栈为空则直接入栈
                        if(stack.isEmpty()){
                            stack.push(val);
                            continue;
                        }
                        //如果栈中有比val小的元素则出栈,累加,乘N,再入栈
                        while(!stack.isEmpty() && stack.peek() < val){
                            tempsum += stack.pop();
                        }
                        //判断是否经过乘法处理
                        if(tempsum == 0){
                            stack.push(val);
                        }else{
                            stack.push(tempsum * val);
                        }
                    }
                }
                //计算最终的和
                while(!stack.isEmpty()){
                    num += stack.pop();
                }
                System.out.println(num);
            }
        }
    
    }

    如果不用栈也可以做,要记录下最近最大的单位是多少,才能保存前面的累加和。如果一亿三千二百万,当扫描到万的时候,要知道前面是三千二百,千的单位比万小的情况,所以要把累加和变成 ” 三千二百 * 万 ”,而不能只是 “二百 * 万”,也不能是 ”一亿三千二百 * 万”。

    展开全文
  • 数字转换成16进制数字表示的字符串,我们可以调用sprintf,但是C的标准库里面并没有提供对应的将个十六进制的字符串型的数字转换成整型数字的函数.我写了个可以实现功能的并尽量使其优化.(目前此函数只支持...
    把一个数字转换成16进制数字表示的字符串,我们可以调用sprintf,但是C的标准库里面并没有提供对应的将一个十六进制的字符串型的数字转换成整型数字的函数.我写了一个可以实现功能的并尽量使其优化.(目前此函数只支持32位)
    
     
    
    /* input hex string, format: 0xAA111 or AA111 or abc11 */
    int ahextoi(char* p)
    {
        int n = 0;
        char* q = p;
    
        /* reach its tail */
        while(*q)
            q++;
    
        if(*p == '0' && *(p + 1) != 0)
            /* skip "0x" or "0X" */
            p += 2;
    
        while(*p)
        {
            int c;
            if(*p >= '0' && *p <= '9')
                c = *p - '0';
            else if(*p >= 'A' && *p <= 'F')
                c = *p - 'A' + 0xA;
            else if(*p >= 'a' && *p <= 'f')
                c = *p - 'a' + 0xA;
            else
                /* invalid char */
                return 0;
    
            n += c << ((int)(q - p - 1) * 4);
            p++;
        }
        return n;
    }
    
     
    
    可以用如下代码进行测试:
    
    int main(int argc, char* argv[])
    
    {
    
        int out = 0;
    
        out = ahextoi("");
    
        printf("%#010X/n", out);
    
        out = ahextoi("0x123");
    
        printf("%#010X/n", out);
    
        out = ahextoi("123abc");
    
        printf("%#010X/n", out);
    
        out = ahextoi("ABC123");
    
        printf("%#010X/n", out);
    
        out = ahextoi("0XAc1b1c");
    
        printf("%#010X/n", out);
    
        return 0;
    
    }
    

    展开全文
  • 数字图像的表示概念

    千次阅读 2016-08-04 19:44:10
    数字图像表示 亮度:幅图像用二维函数f(x,y)表示,任何坐标对(x,y)处的幅度f称为图像在这一点的亮度 灰度级:通常指单色图像的亮度 彩色图像:是由多幅单色图像组合而成的,例如,在RGB彩色系统中,幅...
    数字图像表示



    亮度:一幅图像用二维函数f(x,y)表示,任何坐标对(x,y)处的幅度f称为图像在这一点的亮度

    灰度级:通常指单色图像的亮度

    彩色图像:是由多幅单色图像组合而成的,例如,在RGB彩色系统中,一幅彩色图像由红(R),绿(G),蓝(B)分量图像组成

    采样:将坐标值(X,Y)数字化

    量化:将幅值 f 数字化

    数字图像:当x,y和幅值f都是有限的,离散的量时,称为数字图像

    图像的大小:对一幅图像f(x,y)采样后的到一个M行N列的图像,则该图像的大小为M*N,坐标值是离散量

    坐标约定:原点定义在(x,y)=(0,0)处,x的范围是0~M-1,y的范围是0~N-1,以整数递增

    图像处理工具箱的坐标约定:(r,c)表示行列,坐标原点定义在(1,1)处,r的范围是1~M,c的范围是1~N,以整数递增,称为像素坐标

    空间坐标的坐标约定:不常用,以x表示列,y表示行

    矩阵和阵列:矩阵是二维的,阵列式任意有限维的

    行与列:使用字母M和N分别表示矩阵中的行与列

    行向量:一个1*N的矩阵,即矩阵由一个含有N个元素的行所组成

    列向量:一个M*1的矩阵,即矩阵由一个含有M个元素的列所组成

    标量:一个1*1的矩阵

    矩阵存储在变量中,变量名必须以字母开头,只能由字母,数字和下划线组成

    灰度级:表示灰度图像的亮度层次范围.
              级数越多图像的亮度范围越大层次越丰富.
              用于描述整副图像亮度层次.

    灰度值:表示灰度图像单个像素点的亮度值.
      值越大,像素点越亮;反之越暗.
              用于描述图像中具体像素的亮度值.

    展开全文
  • 基于 FPGA 的数字表示

    万次阅读 2018-11-13 17:35:41
    文章目录基于 FPGA 的数字表示零、计数系统框架 、整数的表示1.1 二进制反码1.2 二进制补码二、 非整数值的表示2.1 定点二进制数2.2 定点量化2.4 小数部分截断2.5 种不同的方法 Trounding三、 浮点数定义及表示...
  • 、阿拉伯数字转汉字 分析发现,中国的数字习惯是 4 位一节的,个 4 位的数字可被转成几千几百几十几,至于后面添加什么单位则不确定: 如果这节 4 位数字出现在 1~4 位,则后面添加单位“元”; 如果这节 4 位...
  • 罗马数字表示方式

    万次阅读 2016-04-23 19:09:22
    罗马数字是最早的数字表示方式,比阿拉伯数字早2000多年,起源于罗马。 如今我们最常见的罗马数字就是钟表的表盘符号:Ⅰ, Ⅱ , Ⅲ ,Ⅳ(IIII),Ⅴ ,Ⅵ ,Ⅶ ,Ⅷ ,Ⅸ ,Ⅹ ,Ⅺ ,Ⅻ …… 对应阿拉伯...
  • 字母表示数字法的转换

    千次阅读 2019-04-17 17:50:17
    在使用excel的web插件的时候,需要将列数字转化为字母表示法;即 数字0的字母表示法A 数字1的字母表示法B 数字25的字母表示法Z 数字26的字母表示法AA 数字27的字母表示法AB 以此类推;我想既然写了,就写个适应...
  •  *问题:编写个程序,用于接收用户输入的正整数,然后显示从0到该数为止表示的所有数字,比如输入11,则显示0,1,2,3,4,5,6,7,8,9,10,11  *注意,输出的数字信息,是行输出,并且用“,”连接,如上所述  *...
  • C语言:第行输入n,表示有n行,每行第数字输入m,表示该行一共有m个加减符号和数字,然后如果每行计算结果是负数,则超纲,最后先输出个k,表示有k个超纲,然后输出k个数字,分别是超纲题的题号?
  • 要显示如下格式的数字,即数字的金钱表示法:小数部分保留两位小数,整数部分每隔三位使用个“,”分隔 代码如下: //保留两位小数并且整数部分三位个逗号分隔符的数字金钱标准表示法: //这里假设我们即不...
  • * 从键盘接受数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三零三。 * * @author Tang * */ public class Test3 {/** * 将个大于等于0的整数转换为...
  • chmod用数字表示权限的方法

    千次阅读 2019-03-22 15:56:21
    前提: mode权限设定字串,格式:[ugoa…][[±=][rwxX]…][,…] 其中u表示拥有者(user),g表示与拥有者属于同个群体(group),o表示其他以外的人(other),a表 示这三...其中a,b,c各为数字,a表示User,b...
  • 声音的数字表示

    千次阅读 2017-10-25 00:06:44
    声音信号的数字化就是用二进制数表示声音的模拟信号。声音的信息表示过程是这样的:声音-->采样-->量化-->编码-->数字音频。 所谓采样,就是在某些特定的时刻对模拟声音信号进行测量,得到离散时间信号。其原理...
  • 数字图像简介及表示

    千次阅读 2019-11-19 17:57:35
    图像是三维世界在二维平面的表示,具体来说就是用光学器件对个物体,个人或是个场景等的可视化表示。 图像的分类 1、从获取方式上: 拍摄类图像、绘制类图像 2、从颜色上: 彩色图像、灰度图像、黑白...
  • python数字表示

    千次阅读 2020-02-08 23:05:48
    科学计数法 四舍五入 round() 方法返回浮点数x的四舍五入值。第二个参数就是保留几个小数,默认...eval()可以运算,不能用于先导0的数字 类型转换 int(x [,base]) ⇒ 将x转换为个十进制的整数 long(x [,base]) ...
  • Java中下划线用于表示数字

    千次阅读 2017-07-03 22:06:11
    今天发现个Java中表示数字的特殊用法,第次发现下划线‘_’竟然能用于表示数据,看代码:public class UsingUnderscoreInNumericLiterals { public static void main(String[] args) { int int_num = 1_00_00_...
  • R把科学技术法表示数字转化为文本
  • 正则表达式中,表示匹配非数字字符的字符

    万次阅读 多人点赞 2019-01-15 16:34:25
    大写表示“非”,d表示digit数字。非数字就是\D, w表示word,非单词就是\W  元字符 描述 \ 将下个字符标记符、或个向后引用、或个八进制转义符。例如,“\\n”匹配\n。...
  • //求结果为多少小时的第步 fin2=pass2+now2; while(fin2>60) { fin2=fin2-60; i++; } //求结果为多少分钟 fin1=fin1+i; if(fin1>24) fin1=fin1100-2400; else fin1=100; //最终求结果为多少小时 fin=fin1+fin2; ...
  • 为什么计算机中数字符号位0表示正数,1表示负数

    万次阅读 多人点赞 2019-03-09 21:09:50
    只知道书本上说是有个符号位,当该符号位为0时,表示的是正数,为1时表示负数。我那时没搞懂为什么这样规定,我觉得1么,代表正数挺合理的,那么0就自然表示负数咯,所以不解,只能死记硬背:0正1负。   我个人...
  • 要求:算法求个十进制正整数在二进制表示中的二进制数字个数 实现有两种方式,种是常规的做法,另外种是利用递归。 常规的做法,利用十进制转换为二进制的算法是K除法(k表示十进制要化成多少进制) int ...
  • ip转换为纯数字(如何用数字表示ip?) 转载:原文地址:http://blog.csdn.net/zgyulongfei/article/details/48845373 ip可以转换成数字,这个可能有许多人还不知道哦,今天博主就来道破此不可泄露之天机 比如...
  • 表示不同文件类型的魔术数字

    千次阅读 2013-04-16 13:32:35
    这里所说的表示不同文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别个...
  • /* 利用switch语句编写个程序,把用数字表示的成绩转化为字母表示的等级。连续查询50次结束*/ #include <stdio.h> int main() { int num,i; i = 50; while(i--) { printf("input a number\n"); ...
  • 给定个以字符串表示的非负整数num,移除这个数中的k位数字,使得剩下的数字最小。 注意: num的长度小于 10002 且≥k。 num不会包含任何前导零。 示例 1 : 输入: num = "1432219", k = 3 输出: "1219" 解释: ...
  • 二进制数字表示方法

    千次阅读 2016-09-27 14:46:44
    二进制数字,写在纸上,一般都写成 0 和 1。 这也不是绝对的。 以各种符号,刻在物体上,也是可以的。 见下图: 这是小米电视后边的散热孔,一共九个汉字 “小米电视为发烧而生”。
  • 给定个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 题目要求: 给定个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下: (与电话按键相同)。注意 1 不对应任何...
  • ccf数字排序-map实现 题目: 问题描述  给定n个整数,请统计出每个整数出现的次数,按... 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现...
  • 它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 数字。 请你将两个数相加,并以相同形式返回表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,748,818
精华内容 699,527
关键字:

他表示一数字